UITableView-tableHeaderView-自适应高度

8,489 阅读1分钟

以前做自定义headerView适应高度都是用系统api算的高度,代码如下


let size = tableHeaderView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize)

tableHeaderView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: size)

listView.tableHeaderView = tableHeaderView

偶然发现还有更简单的方法, 只需要在设置tableHeaderView后设置自定义headerView的宽度的约束,就能够实现自适应高度了


listView.tableHeaderView = headerView

系统约束


headerView.translatesAutoresizingMaskIntoConstraints = false

headerView.widthAnchor.constraint(equalTo: listView.widthAnchor).isActive = true

使用Snapkit


headerView.snp.makeConstraints { make in

make.width.equalTo(listView)

}

千万注意使用约束时的顺序,下面必不可少,否则如果section先有数据,会造成显示了header后,listView的contentSize不对,导致无法滑动

listView.tableHeaderView = tableHeader

            tableHeader.snp.remakeConstraints { make **in******

                make.width.equalTo(listView)

            }

            self.view.layoutIfNeeded()

            listView.tableHeaderView = tableHeader

注意tableFooterView 使用自适应方法无用

原文链接