为什么UITableView忽略了“的分隔色”;额外的;带自定义分隔符的分隔符插入?

为什么UITableView忽略了“的分隔色”;额外的;带自定义分隔符的分隔符插入?,uitableview,ios7,colors,separator,insets,Uitableview,Ios7,Colors,Separator,Insets,如果我在iOS 7中的表视图上设置了一个红色的分隔色,并将分隔色设置为UIEdgeInsetsZero或任何其他自定义插入值,则所有附加行或“额外”行都有默认的彩色分隔符。我怎样才能解决这个问题 关于separatorInset的文档的最后一句话暗示它以某种方式控制额外的记录,但我不知道如何: 在iOS 7及更高版本中,单元格分隔符不会一直延伸到表视图的边缘。此属性设置表中所有单元格的默认插入,就像rowhight设置单元格的默认高度一样它还用于管理在普通样式表底部绘制的“额外”分隔符。 在vi

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

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

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

viewDidLoad
中设置分隔符:

self.tableView.separatorColor = [UIColor redColor];
你会发现:

设置
分隔符设置和颜色时:

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

self.tableView.separatorInset=UIEdgeInsetsZero;// 解决了,但我无法解释原因

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

self.tableView.separatorColor = [UIColor redColor];
self.tableView.separatorInset = UIEdgeInsetsZero;
一切正常:


尝试将其添加到cellForRowAtIndexPath。以及设置tableView的分隔符集

cell.separatorInset=UIEdgeInsetsZero

从UITableViewCell iOS文档:

@属性(非原子)UIEDGEINSET分隔集

单元格内容的插入值

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


同样的问题似乎发生在任何自定义分隔符nset上,而不仅仅是UIEdgeInsetsZero。幸运的是,接受的解决方案也适用于任何自定义分隔符集。谢谢抢手货我更新了问题以包括这个。是的。你能告诉我们为什么你的答案也不是黑客吗?这并不能解释为什么颜色不受尊重。@Austinmarsco这不是一个黑客行为,这显然是iOS的一个缺陷,即在应用新样式后,如果颜色发生变化,它不会重新绘制分隔符。所以你是说,除了我回答中的代码外,你还必须将代码添加到
CellForRowatineXpath
,那么这不是黑客行为?向
separatorInset
添加冗余调用怎么可能不是黑客行为?我承认这两个答案都是黑客行为,但我认为这一个更糟。更改两条语句的顺序不应更改结果,除非在当前运行循环期间再次呈现屏幕(使用LayoutSubView)。总的来说,如果后来有人来编辑你的代码,如果简单的UI属性排序很重要,他们会更容易破坏代码。只需在代码上方添加注释即可解决问题。