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