UITableView 每个行分隔符上不需要的白线

Posted

技术标签:

【中文标题】UITableView 每个行分隔符上不需要的白线【英文标题】:UITableView unwanted white line on each line separator 【发布时间】:2014-06-27 13:43:11 【问题描述】:

我一直在用下面的代码来做tableview

 _comboBoxTableView = [[UITableView alloc] initWithFrame:CGRectMake(1, _selectContentLabel.frame.origin.y+_selectContentLabel.frame.size.height-1, frame.size.width+1, 48) style:UITableViewStylePlain];
_comboBoxTableView.layer.borderColor=[UIColor colorWithRed:226.0/255.0 green:226.0/255.0 blue:226.0/255.0 alpha:1].CGColor;
_comboBoxTableView.layer.cornerRadius = 10;
_comboBoxTableView.layer.borderWidth = 1.0f;
_comboBoxTableView.separatorColor = [UIColor colorWithRed:166.0/255.0 green:166.0/255.0 blue:166.0/255.0 alpha:1];
[_comboBoxTableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine];

每个分隔符的左侧都有一个不需要的白色,如下所示。

这是一个错误吗?我正在使用 ios7.1 运行它。有什么解决办法吗?

【问题讨论】:

【参考方案1】:

这不是错误。从 iOS 7 开始,表格视图能够调整其分隔符的插入。如果您想要边到边分隔符,请消除插入:

if ([_comboBoxTableView respondsToSelector:@selector(separatorInset)])  // In case running iOS < 7
    _comboBoxTableView.separatorInset = UIEdgeInsetsZero;

更多信息请关注UITableView documentation。

【讨论】:

【参考方案2】:

万一您没有时间以编程方式解决此问题,您可以添加子视图修补 while 行。

我知道这不是正确的解决方案,但有效。

【讨论】:

【参考方案3】:

什么对我有用:在 Interface Builder 中,tableview 有一个叫做 Separator Inset 的东西。它通常处于默认状态(这似乎是 15)。

您可以将其切换为自定义并将 15 替换为 0。不再有奇怪的行。

【讨论】:

【参考方案4】:

如果有人需要非零分隔符插入,则那些白线是 UITableCell,它未被单元格内容视图和分隔符覆盖。只需在文档大纲(不是内容视图!)中选择 UITableCell 并将其设置为与内容视图的背景相同的背景颜色(或您想要的任何颜色)。

【讨论】:

以上是关于UITableView 每个行分隔符上不需要的白线的主要内容,如果未能解决你的问题,请参考以下文章

Leaflet.js网格的白线

UITableView - 出现在单元格之间的一条线

ios 7底部的白线与UITextField

iOS UITableView 错误 - 每个其他 tableview 单元格上都有白线

如何消除点击按钮时周围出现的白线?

flexbox 项目中的白线不会消失