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)
}
始終高度獲取不到。
小伙伴們不要忘記!最后說一句:坑!