UITableView 在 iOS8 中为某些单元格显示错误位置的分隔符

Posted

技术标签:

【中文标题】UITableView 在 iOS8 中为某些单元格显示错误位置的分隔符【英文标题】:UITableView displays separator at wrong position in iOS8 for some cells 【发布时间】:2014-09-20 09:37:41 【问题描述】:

我们有一个 UITableView,它在 ios7 上运行良好,但是当我在 iOS8 模拟器中尝试时,我发现大多数单元格的单元格分隔符放置不正确。奇怪的是,有些单元格正确显示了分隔符。

见附图:

我这样设置单元格高度:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

    return 70.0f;

你知道发生了什么吗?谢谢!

编辑:

我在此期间使用的解决方法是禁用分隔符...

    [tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone];

...在单元格视图中自己绘制...

    UIView* separator = [[UIView alloc] initWithFrame:CGRectMake(20, cellHeight-1, frame.size.width - 40, 1)];
    separator.layer.borderWidth = 1;
    separator.layer.borderColor = [[UIColor grayColor] CGColor];
    [self addSubview:separator];

...但我不想这样做。

【问题讨论】:

虽然这应该可以工作,但您可以尝试在 TableView 本身上设置 rowHeight 属性吗? 谢谢,但设置 rowHeight 并没有改变任何东西... :( 你在使用 AutoLayout 吗? 不,它是由代码构建的 UITableView。我想我可以从代码中启用 AutoLayout,但我没有。 感谢您的提问。我遇到了完全相同的问题,iOS 8 中的分隔符关闭位置,但它在 iOS 7 中很好。我正在使用与现在相同的解决方法。 【参考方案1】:

我遇到了同样的问题,我是这样解决的:

如果您为表格视图使用自定义单元格并且您已覆盖 layoutSubviews,则需要在方法开头调用它的超级视图方法:

- (void)layoutSubviews

    [super layoutSubviews];
    // Your implementation

【讨论】:

好吧,在这上面浪费了 1 个小时,我想写“谢谢!”看到我在 2014 年已经感谢你了。 不适合我,即使我有自定义单元格的 xib;当我在 xib 中更换配件时,它也被绘制在错误的位置。内容视图也没有填满它的大小和表格视图 迪杰姆,谢谢你的回答。它有助于在 iOS 14 发布时解决 UITableView 中选定的灰色背景颜色。

以上是关于UITableView 在 iOS8 中为某些单元格显示错误位置的分隔符的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UITableView 单元格中添加标签和图像视图的数量

在 iOS8 的 Interface Builder 中向 UITableView 添加静态单元格?内容部分未显示

如何在 UITableView 的单元格中为 UIImageView 获取 touchesMoved?

包含 UITableView 的 UITableViewCell 的高度(iOS8 和 AutoLayout)

具有自动布局的 UITableView 中的动态单元格高度

在 UICollectionView/UITableView 中为滚动视图的偏移设置动画会导致单元格过早消失