为单个 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

UITableViewCell分隔线

如何在不添加另一个 UIView 的情况下为情节提要中的 uitableViewCell 制作等宽分隔符?

尝试使用插图隐藏 UITableViewCell 分隔符,但它只会降低不透明度

uitableviewcell 分隔线未全宽显示

iOS)如何添加uitableviewcell的默认分隔符