背景:
在實際開發中,UI佈局我們現在基本上都是使用Masonry.但是在tableHeaderView上使用自動佈局有點麻煩.有時候tableHeaderView有多個子view. 有的人會把子view 的高度依次相加給 tableHeaderView.
解決:
直接放代碼
UIView *header = [[UIView alloc] init];
// 2個子視圖 (UIView)
[header addSubview:self.topAssetView];
[header addSubview:self.cView];
self.tableView.tableHeaderView = header;
// 佈局
// A
[self.topAssetView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(header);
make.left.right.equalTo(header);
make.height.mas_equalTo(130);
}];
// B
[self.cView mas_makeConstraints:^(MASConstraintMaker *make) {
// 最後一個子視圖的bottom 一定要和header 的bottom 對齊
make.left.right.bottom.equalTo(header);
make.top.equalTo(self.topAssetView.mas_bottom);
make.height.mas_equalTo(72);
}];
// 一定要給header 寬度.否則會導致header高度 失敗
[header mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.view);
}];
// 及時刷新一下.
[self.tableView.tableHeaderView layoutIfNeeded];
說明:
A 處 把第一個子視圖的top 和header 的top 一致
B 處 第二個子視圖的top 和第一個子視圖的bottom 一致.並且把自己的bottom 和header bottom一致.使其用子視圖把header撐開高度是兩個子視圖的高度