背景:
在实际开发中,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撑开高度是两个子视图的高度