【问题标题】:UITableView displays separator at wrong position in iOS8 for some cellsUITableView 在 iOS8 中为某些单元格显示错误位置的分隔符
【发布时间】: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 中很好。我正在使用与现在相同的解决方法。

标签: ios objective-c ios8


【解决方案1】:

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

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

- (void)layoutSubviews
{
    [super layoutSubviews];
    // Your implementation
}

【讨论】:

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