如何消除UITableView的tableHeaderView与section header之间的空隙
UITableView主header与section header空隙问题解决方案
- 首先保证
postView的自动布局约束无歧义
需确保postView内部子控件的垂直方向约束完整,上下边约束都已正确设置,可自主计算出对应高度,不存在布局歧义。 - 手动计算动态高度并刷新header布局
给tableView赋值tableHeaderView后,添加以下代码触发高度计算并更新布局:tableView.tableHeaderView = postView // 触发布局计算 postView.layoutIfNeeded() // 获取自适应压缩后的最优尺寸 let fitSize = postView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize) // 更新postView高度 postView.frame.size.height = fitSize.height // 刷新tableView布局,二选一即可 // 方案1:重新赋值header tableView.tableHeaderView = postView // 方案2:触发tableView批量更新 // tableView.beginUpdates() // tableView.endUpdates() - 额外情况排查
完成以上操作后仍有空隙可排查两项配置:- 确认
tableView的contentInsetAdjustmentBehavior未引入多余顶部内边距,不需要系统自动调整时可设置:tableView.contentInsetAdjustmentBehavior = .never - 检查
postView自身的底部约束是否存在多余留白,确认子控件到postView底部的约束常数符合预期。
- 确认
内容的提问来源于stack exchange,提问作者infiniteObj
相关产品推荐
相关产品推荐

