在 iOS 11 之前,我使用以下代码隐藏单个 UITableViewCell 的分隔线:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.row == 0) {
// Remove separator inset
if ([cell respondsToSelector:@selector(setSeparatorInset:)]) {
[cell setSeparatorInset:UIEdgeInsetsMake(0, tableView.frame.size.width, 0, 0)];
}
// Prevent the cell from inheriting the Table View's margin settings
if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
[cell setPreservesSuperviewLayoutMargins:NO];
}
// Explictly set your cell's layout margins
if ([cell respondsToSelector:@selector(setLayoutMargins:)]) {
[cell setLayoutMargins:UIEdgeInsetsMake(0, tableView.frame.size.width, 0, 0)];
}
}
}
在这个例子中,分隔符在每个部分的第一行被隐藏。我不想完全摆脱分隔符 - 只是对于某些行而言。
iOS 11中,上述代码不起作用。单元格的内容被完全推到右边。
是否有一种方法可以在iOS 11中隐藏单个UITableViewCell的分隔符?
提前澄清一下,我知道我可以使用以下代码隐藏整个UITableView的分隔符(希望避免指导我执行此操作的答案):
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
编辑:根据下面的评论澄清一下,如果我包括setSeparatorInset行,代码会完全执行相同的操作。因此,即使只有那一行,单元格的内容也会被推到最右边。