为单个 UITableViewCell 设置分隔符插入
Posted
技术标签:
【中文标题】为单个 UITableViewCell 设置分隔符插入【英文标题】:Set separator inset for single UITableViewCell 【发布时间】:2015-04-28 07:56:21 【问题描述】:有没有办法?看来我只能使用setSeparatorInset:
方法设置全局 UITableView 分隔符插图,但我想在同一个 UITableView 中有不同的插图。有没有可能?
我尝试使用tableView:willDisplayCell:forRowAtIndexPath:
在具体的 UITableViewCell 中设置分隔符插入,如下所示,但它不起作用。
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
...
[cell setSeparatorInset:UIEdgeInsetsMake(0, 50, 0, 0)];
我正在开发 ios7。
【问题讨论】:
尝试在 uitableview 委托方法 cellForRowAtIndexPath 中写入 那行不通。问题是 UITableView 中存在setSeparatorInset:
方法,所以如果我使用它,它将更改整个 UITableView 的分隔符插入,而不是具体单元格。
iOS 8 UITableView separator inset 0 not working 的可能重复项
【参考方案1】:
如果您知道单元格的indexPath
。你可以设置它使用
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
...
if (indexPath.row == 0)
// Customize here
[cell setSeparatorInset:UIEdgeInsetsMake(0, 50, 0, 0)];
else
[cell setSeparatorInset:UIEdgeInsetsMake(0, 0, 0, 0)];
如果不是,您应该继承UITableView
并在那里自定义分隔符插入。然后将其加载到您的表格视图中。不要在cellForRowAtIndexPath:
方法和subclasses
中设置separatorInset
属性。
【讨论】:
【参考方案2】:您可以使用自定义单元格来做到这一点。
您将 UITableView
设置为根本不显示分隔符 (separatorStyle = UITableViewCellSeparatorStyleNone
) 并让您的 UITableViewCell
子类处理分隔符的绘制。最简单的方法是在每个单元格上都有一个“分隔视图”。现在,在cellForRowAtIndexPath
中配置单元格时,您可以设置您喜欢的任何插图。
【讨论】:
以上是关于为单个 UITableViewCell 设置分隔符插入的主要内容,如果未能解决你的问题,请参考以下文章
将多个自定义 UITableViewCell 链接到单个 xib
如何在不添加另一个 UIView 的情况下为情节提要中的 uitableViewCell 制作等宽分隔符?