我有tableView
动态tableViewCells
,分隔符属性设置为none
。
每个单元格具有3个subviews
,在此称为 backgroundViews ,单元格高度相同,并排放置。它们呈现背景色
这些 backgroundViews 中的每一个都有一个imageView
作为自己的subview
。 imageView
的大小与 backgroundView 的大小相同
tableViewCell
及其子视图由 autolayout 排列,即imageViews
的 backgroundView 的边距为0,而3 backgroundViews 的上边距和下边距为tableViewCell
,左边的 backgroundView 的边距为0,右边的 backgroundView < / em>右边的单元格边缘为0,所有3个 backgroundViews 的宽度相等。
在最简单的情况下,image
的{{1}}属性为imageViews
,因此 backgroundViews 的彩色背景可见。
当我在iPad(模拟器或设备)上运行应用程序时,一切看起来都很好
当我在iPhone (模拟器或设备)上运行时,某些单元格之间有时几乎没有分隔线,可能是1点高(在下面的屏幕截图中)第2和第5小区)
此分隔线与 backgroundViews 无关,因为它们具有背景颜色,分隔线为白色。它既不与nil
也不与tableViewCell
相关,因为它们都具有清晰的背景颜色。它既不与contentView
本身相关,也因为它的背景颜色设置为黑色
我不知道这条分离线来自哪里,也不知道为什么它只出现在iPhone上,而不是出现在iPad上。
我建议如何摆脱这些烦人的线路。
答案 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
}