在 iOS 15 中,UITableView
在节标题和第一个单元格之间添加分隔符:
如何隐藏或删除该分隔符?
几点注意事项:
- 标头是从
tableView(_:viewForHeaderInSection:)
. - 查看视图调试器时,我可以看到额外的分隔符实际上是第一个单元格的子视图,它现在具有顶部和底部分隔符。
- 除了设置
tableView.separatorInset
更改单元格分隔符的插入外,这是一个完全标准的表格视图,没有自定义。
在 iOS 15 中,UITableView
在节标题和第一个单元格之间添加分隔符:
如何隐藏或删除该分隔符?
几点注意事项:
tableView(_:viewForHeaderInSection:)
.tableView.separatorInset
更改单元格分隔符的插入外,这是一个完全标准的表格视图,没有自定义。选项1:也许通过使用UITableViewCellSeparatorStyleNone
表格视图并将单元格的系统背景视图替换为仅具有底线的自定义视图?
选项 2:使用来自https://developer.apple.com/forums/thread/684706的提示
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 // only Xcode 13+ needs and can compile this
if (@available(iOS 15.0, *)) {
[self.tableview setSectionHeaderTopPadding:0.0f];
}
#endif
}
我遇到了类似的问题,但这是由于表头视图突然在 iOS 15 上显示为分隔符。唯一对我有用的是:
if #available(iOS 15.0, *)
{
tableView.tableHeaderView = UIView()
}
我能够用这段代码修复它。
if (@available(iOS 15.0, *)) {
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, CGFLOAT_MIN)];
[self.tableView setSectionHeaderTopPadding:0.0f];
}
我相信tableView.separatorStyle = .none
应该做的伎俩。
在我的情况下,我想使用本机部分标题和不同于 0 的顶部填充,所以如果你想删除每个部分上额外的顶部和底部分隔符,这应该可以工作:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Dequeue cell and set it up ...
if indexPath.row == 0 {
let separator = cell.subviews.filter({
$0.frame.minY == 0 && $0 !== cell.contentView
}).first
separator?.isHidden = true
cell.separatorInset.left = 0 // Or whatever desired inset
}
if indexPath.row + 1 == dataSource[indexPath.section].count {
cell.separatorInset.left = cell.bounds.width
} else {
cell.separatorInset.left = 0 // Or whatever desired inset
}
return cell
}
iOS 15、斯威夫特 5
要删除节标题和第一个单元格之间的线,您应该在配置 UITableView 时将 sectionHeaderTopPadding 设置为零。
if #available(iOS 15.0, *) {
tableView.sectionHeaderTopPadding = 0.0
}
您的问题可以有两种解决方案/
一个是
self.tableView.separatorColor = self.tableView.backgroundColor
这是一个技巧解决方案,它使外线“消失”并保持分隔线可见
如果不使用分组,请将您的tableview
类型从分组更改为普通。