iOS 15如何移除UITableView section header与首个cell的分隔线
问题原因
该额外分隔线是iOS15系统UITableView新增默认配置导致的:系统为UITableView新增了sectionHeaderTopPadding属性默认值非0,同时会主动渲染首个Cell的顶部分隔线,最终呈现出header与第一个Cell之间多了一条分隔线的效果。
解决方案
可根据业务场景选择以下任意一种方案实现:
- 方案1:使用iOS15新增API直接适配(最简方案)
直接将新增的顶部padding属性设为0即可同时移除多余间距和额外分隔线:// Objective-C实现 if (@available(iOS 15.0, *)) { tableView.sectionHeaderTopPadding = 0; }// Swift实现 if #available(iOS 15.0, *) { tableView.sectionHeaderTopPadding = 0 } - 方案2:仅隐藏首个Cell的顶部分隔线
如果你需要保留默认的header顶部间距,仅隐藏多余分隔线,可以在Cell展示代理中单独调整第一行Cell的分隔线内边距:func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { if indexPath.row == 0 { // 将分隔线左内边距设为屏幕宽度,使其移出可视区域 cell.separatorInset = UIEdgeInsets(top: 0, left: UIScreen.main.bounds.width, bottom: 0, right: 0) } else { // 其余行恢复自定义的全局分隔线内边距 cell.separatorInset = tableView.separatorInset } } - 方案3:全自定义分隔线(规避系统版本差异)
直接关闭系统自带的分隔线,自主实现分隔线逻辑,不受系统版本更新影响:
之后在自定义Cell的布局代码中添加高度为0.5pt的底部视图作为自定义分隔线即可。// 关闭系统分隔线 tableView.separatorStyle = .none
内容的提问来源于stack exchange,提问作者Hesham
相关产品推荐
相关产品推荐

