【问题标题】:Set separator inset for single UITableViewCell为单个 UITableViewCell 设置分隔符插入
【发布时间】:2015-04-28 07:56:21
【问题描述】:

有没有办法为单个 UITableViewCell 设置分隔符插入?看来我只能使用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 objective-c uitableview


【解决方案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 中配置单元格时,您可以设置您喜欢的任何插图。

    【讨论】: