为何UITableView的tableHeaderView随内容上滑?如何固定它?
UITableView Plain样式下tableHeaderView无法固定的排查与解决
确认tableHeaderView的正确赋值方式
必须直接给tableView.tableHeaderView属性赋值,别把视图手动添加到tableView的subview中,也别误设成section header。正确示例:let customHeader = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 80)) customHeader.backgroundColor = .lightGray tableView.tableHeaderView = customHeader检查UITableView的样式设置
不管是代码初始化还是storyboard配置,确保样式是.plain:- 代码初始化:
let tableView = UITableView(frame: view.bounds, style: .plain) - Storyboard:选中表格,在属性面板里确认Style选项为Plain,别选成Grouped。
- 代码初始化:
处理自动布局可能的问题
如果headerView用了自动布局,要保证高度能被正确计算。赋值后可以调用tableView.tableHeaderView?.sizeToFit()来让系统自动计算合适的尺寸。另外,不要给headerView添加和tableView顶部相关的约束,这会破坏原生的固定逻辑。排除第三方或自定义子类的干扰
如果你用了自定义UITableView子类或者第三方表格库,可能是这些代码重写了滚动逻辑导致异常。可以临时替换成原生UITableView测试,确认是否是外部因素导致的问题。
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

