layoutFittingCompressedSize使headerView高度自适应
好久没搞过这些事情了,今天写UI,突然需要tableView.tableHeadView自适应高度,
本来是个很简单的事情,由于忘了一个点,瞎忙好久,[Cry]
1,创建TableView
let tableView = UITableView(frame: CGRect(x: 0, y: 0, width: 100, height: 100),style: UITableView.Style.plain)
tableView.delegate = self
tableView.dataSource = self
self.view.addSubview(tableView)
self.tableView = tableView
tableView.snp_makeConstraints { (make) in
make.top.equalTo(self.view.snp_top)
make.left.right.equalTo(0)
make.bottom.equalTo(self.view.snp_bottom)
}
2,添加HeadView
let header = UIView()
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30));
label.text = self.content
label.numberOfLines = 0
header.addSubview(label)
//设置header宽度
header.snp_makeConstraints { (make) in
make.width.equalTo(UIScreen.main.bounds.width)
}
label.snp.makeConstraints { (make) in
make.left.equalTo(header.snp_leftMargin).offset(8)
make.right.equalTo(header.snp_rightMargin).offset(8)
make.top.equalTo(header.snp_top)
make.bottom.equalTo(header.snp_bottom)
}
self.tableView.tableHeaderView = header;
3,重设HeadView高度
let height = header.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
var frame = header.bounds;
frame.size.height = height;
header.frame = frame;
self.tableView.tableHeaderView = header;
self.tableView.tableHeaderView?.setNeedsLayout();
self.tableView.tableHeaderView?.layoutIfNeeded();
本来这样就行了,可是我由于理解问题,认为header的width系统会自动判断,少了这句
header.snp_makeConstraints { (make) in
make.width.equalTo(UIScreen.main.bounds.width)
}
始终高度获取不到。
小伙伴们不要忘记!最后说一句:坑!