UITableView 行分隔符问题

3
我的应用程序由动态高度行的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
将 cellForRow 代码添加到问题中。 - Shubhank
“Important note: The problem doesn't show up on simulator even with exactly the same data.” 这句话的意思是什么?问题只有在设备测试时才会出现吗? - Akshat Singhal
@AkshatSinghal 确切无误 - Tancrede Chazallet
只是一个想法...尝试在模拟器和设备上打印每行的高度和顶部像素位置,以及tableView的高度,然后查看值是否有差异。 - Akshat Singhal
@AncAinu 请告诉我,cellForRowAtIndexPath 中的代码具体是什么? - Ajay Sharma
显示剩余5条评论
2个回答

7
也许问题是由于您的代码提供了小于一个Retina像素(0.5)的十进制分数的动态单元格高度所致。请尝试将您在- tableView:heightForRowAtIndexPath:中返回的值四舍五入(如果您还没有这样做),看看是否有帮助。

我责备自己以为像这样的事情,但没想到它可以这么简单。你是对的,伙计!谢谢你比我更聪明 :) - Tancrede Chazallet
1
谢谢!不过我并不更聪明 :) 只是以前在布局中也遇到过一些浮点值的问题。 - Andris Zalitis

0

一个可能的解决方法(不了解您的UITableViewDataSource方法和UITableViewCell实现)是将表格视图后面的视图更改为白色。间隙仍然存在,但与上下方的单元格颜色相同,因此不可见。

您的图像中显示的问题仅出现在第4行,对吗?表格视图行上下的橙色区域是什么?

如果上下橙色区域不是表格视图的一部分,则可以尝试:

tableView.backgroundColor = [UIColor whiteColor];

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接