UITableView有时会在iPhone上显示单元格之间的分隔线,而不是iPad上

时间:2015-03-25 12:37:02

标签: ios uitableview

我有tableView动态tableViewCells,分隔符属性设置为none
每个单元格具有3个subviews,在此称为 backgroundViews ,单元格高度相同,并排放置。它们呈现背景色 这些 backgroundViews 中的每一个都有一个imageView作为自己的subviewimageView的大小与 backgroundView 的大小相同 tableViewCell及其子视图由 autolayout 排列,即imageViews backgroundView 的边距为0,而3 backgroundViews 的上边距和下边距为tableViewCell,左边的 backgroundView 的边距为0,右边的 backgroundView < / em>右边的单元格边缘为0,所有3个 backgroundViews 的宽度相等。

enter image description here

在最简单的情况下,image的{​​{1}}属性为imageViews,因此 backgroundViews 的彩色背景可见。
当我在iPad(模拟器或设备)上运行应用程序时,一切看起来都很好 当我在iPhone (模拟器或设备)上运行时,某些单元格之间有时几乎没有分隔线,可能是1点高(在下面的屏幕截图中)第2和第5小区) enter image description here 此分隔线与 backgroundViews 无关,因为它们具有背景颜色,分隔线为白色。它既不与nil也不与tableViewCell相关,因为它们都具有清晰的背景颜色。它既不与contentView本身相关,也因为它的背景颜色设置为黑色 我不知道这条分离线来自哪里,也不知道为什么它只出现在iPhone上,而不是出现在iPad上。 我建议如何摆脱这些烦人的线路。

2 个答案:

答案 0 :(得分:1)

问题如下:
我将tableViewCell宽度除以3,并将tableView&#39; s rowHeight属性设置为相同的值,并排获得3个正方形。
在iPad上,行高为768/3 = 256,为整数值 在iPhone上,行高为320/3 = 106.66666666666667,是一个小数值。因此,行高度不能以1:1的比例映射到屏幕点 当我按行

舍入行高时
self.tableView.rowHeight = ceil(fieldWidth);
问题消失了。

答案 1 :(得分:0)

接受的答案对我不起作用。但是,在单元格上设置clipsToBounds属性有帮助

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier( ... )
    ...
    cell.clipsToBounds = true
}