一些不需要的 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】:

您的单元格正在重复使用,因此您需要像这样更改cellForRowAtIndexPathif 条件

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 设置

将图像从相机缩放到 UIImageView(并保持比例)

iOS 中 Cornered UIImageView 中不需要的内容

关于 UIImageView 常量动画

NSLayoutConstraint 设置

iOS 一些 UIImageView 被拉伸