UITableView行分隔符问题

时间:2014-03-10 10:07:58

标签: ios uitableview autolayout

我的应用由UITableView组成,动态高度行,全部采用AutoLayout(以编程方式)。

我的UITableView没有任何分隔符,我自己在每一行上绘制它们(只有一个1px的UIView ...)。因此设置UITableView时没有任何分隔符。

这很好用。但是有些随机时间,特别是当视图中有很多不同的行高时,某些行之间会出现一些分离。这使得背景(橙色)可见并且看起来像一个错误(见下图)。

我认为在管理每行的高度时它是iOS的一个错误实习生,它可能是系统试图显示的接近0的值,因此显示1px高度线。

我对所有可能成为解决方案的建议持开放态度。

修改

我添加了更大的图片,显示了问题。 我无法添加cellForRowAtIndexPath代码,因为它非常复杂。 我能说的是:

  • 细胞1,3,5考虑其含量具有动态高度。
  • 细胞3,5是相同类型的,并且可以在它们之间重复使用
  • 单元2,4是相同类型的,并且可以在它们之间重复使用,并且具有固定的高度
  • 如果我没有显示第2行和第3行,问题就不会显示出来(但我可能会遇到其他不同的情况,它实际上是随机的)。

重要说明:即使数据完全相同,问题也不会显示在模拟器上。

编辑2

这里是我如何设置白色背景到我的手机

self.backgroundColor = [UIColor clearColor];    
self.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageWithColor:[UIColor whiteColor]]];

separator issue

2 个答案:

答案 0 :(得分:6)

问题可能是由于您的代码提供的动态单元格高度小于一个视网膜像素(0.5)。尝试将您在- tableView:heightForRowAtIndexPath:中返回的值四舍五入(如果您还没有将其舍入),看看是否有帮助。

答案 1 :(得分:0)

一种可能的解决方法(不了解您的UITableViewDataSource方法和UITableViewCell实施的更多信息)是将tableview背后的视图更改为白色。间隙仍将存在,但与上下单元格的颜色相同,因此不可见。

图片中显示的问题仅适用于第4行,对吗? tableview行上方和下方的橙色区域是什么?

如果上部和下部橙色区域不是tableview的一部分,您可以尝试:

tableView.backgroundColor = [UIColor whiteColor];

如果橙色区域是tableview的页眉和页脚,则可以将tableview的backgroundColor设置为白色,然后将页眉和页脚视图的视图设置为橙色背景。