一些不需要的 UIImageView 在尝试将它们设置为 UITableView 的边框时消失了
Posted
技术标签:
【中文标题】一些不需要的 UIImageView 在尝试将它们设置为 UITableView 的边框时消失了【英文标题】:Some unwanted UIImageViews disappear while trying to set them as borders of UITableView 【发布时间】:2016-07-21 05:21:57 【问题描述】:我想要做的是用小点替换边框(当然,默认情况下是实线)。我希望点的大小为 6 x 6。
使边框不可见是一件简单的事情;我只是在属性检查器中将分隔符设置为“无”。
但是没有字段可以将图像或其他对象设置为分隔符。为了解决这个问题,我把点分成上下两块,在UIImageViews中分配,上面的在底部,下面的在上面。
然后在函数tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)中,我得到了第一行的下图和最后一行的上图不可见。
导致问题的原因是一些不需要的点消失了,而我打算改变的点却正确地消失了。此外,当滚动tableView
时,它们会返回或消失。代码和截图如下。
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
let cellIdentifier = "reuseIdentifier"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MyListTableViewCell
//each element in datas[] has lowercase alphabets, a from q.
let array = datas[indexPath.row]
//data is a UIButton, which is the only component in each row besided those dots
cell.data.setTitle(array, forState: .Normal)
//this is where I typed to handle the unwanted dots on the very top and bottom
if indexPath.row == 0
cell.lowerHalf.hidden = true
else if indexPath.row == datas.count - 1
cell.upperHalf.hidden = true
///////////////////
return cell
当我上下滚动tableView
时,它变成了这样:
是什么让不应该消失的点消失了?或者他们是将图像设置为边框的更好方法?
+按照 iSashok 的建议,不幸的是,事情并没有改变。我在声明后立即应用了此代码;然后我移到了 return 语句之前。两者都不起作用。
cell.clipsToBound = false
【问题讨论】:
为了您的更多信息,我没有使用全点的原因是 UIButton 不会以这种方式垂直居中。 【参考方案1】:您的单元格正在重复使用,因此您需要像这样更改cellForRowAtIndexPath
的if
条件
if indexPath.row == 0
cell.lowerHalf.hidden = true
cell.upperHalf.hidden = false
else if indexPath.row == datas.count - 1
cell.lowerHalf.hidden = false
cell.upperHalf.hidden = true
else
cell.lowerHalf.hidden = false
cell.upperHalf.hidden = false
【讨论】:
嘿,你就是那个男人。我不知道为什么我没有添加最后一段代码来设置其他半点可见。 欢迎,快乐编码:)【参考方案2】:尝试修改你的单元格clipsToBounds
属性
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
如下图
cell.clipsToBounds = false;
对于contentView
也一样
cell.contentView.clipsToBounds = false;
【讨论】:
对不起,它没有用。我截图了,但没有上传到编辑后的帖子,因为它和以前一样。 为contentView
添加相同的cell.contentView.clipsToBounds = false;
【参考方案3】:
为什么不使用UITableViewHeaderFooterView?只需使用该点图像在中心创建您的视图,然后从 viewForFooterInSection 返回该视图。
【讨论】:
以上是关于一些不需要的 UIImageView 在尝试将它们设置为 UITableView 的边框时消失了的主要内容,如果未能解决你的问题,请参考以下文章
UIImageView 忽略了我的 ContentMode 设置