iOS-tableHeaderView利用自动布局自适应高度
2018-06-01 本文已影响36人
萌小菜
效果:
![](https://img.haomeiwen.com/i938554/4b00ec889bb4849e.gif)
关键点0:
headerView
的子View的布局一定要从headerView
的最上面开始填充,然后依次往下面设置布局
private func setupSubViews(){
topView = UIView()
topView.backgroundColor = YZJRandomColor()
addSubview(topView)
topView.snp.makeConstraints { (make) in
make.left.right.top.equalTo(self)
make.height.equalTo(99)
}
middleView = UIView()
middleView.backgroundColor = YZJRandomColor()
addSubview(middleView)
middleView.snp.makeConstraints { (make) in
make.top.equalTo(topView.snp.bottom)
make.left.right.equalTo(self)
make.height.equalTo(103)
}
bottomView = UIView()
bottomView.backgroundColor = YZJRandomColor()
addSubview(bottomView)
bottomView.snp.makeConstraints { (make) in
make.top.equalTo(middleView.snp.bottom)
make.left.right.equalTo(self)
make.height.equalTo(129)
}
}
关键点1:
第一次显示的时候,需要在headerView
类的didMoveToSuperview
里面设置布局(宽度的布局一定要设置)
override func didMoveToSuperview() {
super.didMoveToSuperview()
if superview != nil{
snp.remakeConstraints { (make) in
make.width.equalTo(superview!)
make.bottom.equalTo(bottomView)
}
layoutIfNeeded()
}
}
关键点2:
headerView
布局修改后需要调用superview?.layoutIfNeeded()
,并重新赋值tableView
的tableHeaderView
topView.snp.remakeConstraints { (make) in
make.left.right.top.equalTo(self)
make.height.equalTo(randomHeight())
}
middleView.snp.remakeConstraints { (make) in
make.top.equalTo(topView.snp.bottom)
make.left.right.equalTo(self)
make.height.equalTo(randomHeight())
}
bottomView.snp.remakeConstraints { (make) in
make.top.equalTo(middleView.snp.bottom)
make.left.right.equalTo(self)
make.height.equalTo(randomHeight())
}
superview?.layoutIfNeeded()
headerView.change()
tableView.tableHeaderView = headerView