为什么UITableView会忽略使用自定义separatorInset的“extra”分隔符的separatorColor?

时间:2013-10-01 20:39:53

标签: uitableview ios7 colors separator insets

如果我在iOS 7的表格视图中设置了红色separatorColor,并将separatorInset设置为UIEdgeInsetsZero或任何其他自定义插入值,则所有其他或“额外”行都有默认的彩色分隔符。我该如何解决这个问题?

关于separatorInset的文档的最后一句暗示它以某种方式控制了额外的记录,但我不知道如何:

  

在iOS 7及更高版本中,单元格分隔符不会一直延伸到表格视图的边缘。此属性设置表中所有单元格的默认插入,就像rowHeight设置单元格的默认高度一样。 它还用于管理在普通样式表底部绘制的“额外”分隔符。

viewDidLoad中设置分隔符:

self.tableView.separatorColor = [UIColor redColor];

你明白了:

enter image description here

当您设置separatorInset和颜色时:

self.tableView.separatorInset = UIEdgeInsetsZero;    // <- any custom inset will do
self.tableView.separatorColor = [UIColor redColor];

你明白了:

enter image description here

为什么会发生这种情况?如何将所有分隔符设置为红色并将所有分隔符插入设置为零?这是一个错误吗?

2 个答案:

答案 0 :(得分:20)

解决了它,但我无法解释原因。

交换两个语句的顺序。先设置颜色,然后设置插图:

self.tableView.separatorColor = [UIColor redColor];
self.tableView.separatorInset = UIEdgeInsetsZero;

一切正常:

enter image description here

答案 1 :(得分:2)

尝试将此添加到cellForRowAtIndexPath。以及设置tableView的separatorInsets。

cell.separatorInset = UIEdgeInsetsZero;

来自UITableViewCell iOS文档:

  

@property(非原子)UIEdgeInsets separatorInset

     

单元格内容的插入值。

     

您可以使用此属性在当前单元格的内容与表格的左右边缘之间添加空格。正插入值向内移动细胞内容和细胞分离器并远离表边缘。将负值视为inset设置为0。