UITableView 的 tableHeaderView 使用Masonry布局

UITableView使用UITableViewStylePlain样式。

UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor redColor];
[view addSubview:self.customHeaderView];
[_customHeaderView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(view);
}];
_tableView.tableHeaderView = view;
__weak typeof(self) weakSelf = self;// 个人习惯
[view mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.top.width.equalTo(weakSelf.tableView);
}];
[_tableView layoutIfNeeded];

UITableView使用UITableViewStyleGrouped样式(使用的时候遇到了tableview的headerView与第一个分组之间有一块多余的空白,解决方法是设置一个固定的高度,若你也遇到了相同的问题,可以尝试一下)。

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, CGFLOAT_MIN)]; // 此处设置一个固定高度,解决有空白的问题
view.backgroundColor = [UIColor redColor];
[view addSubview:self.customHeaderView];
[_customHeaderView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.equalTo(view);
}];
_tableView.tableHeaderView = view;
__weak typeof(self) weakSelf = self;
[view mas_remakeConstraints:^(MASConstraintMaker *make) {
    make.top.width.equalTo(weakSelf.tableView);
    make.height.equalTo(weakSelf.customHeaderView.mas_height).priorityHigh();
}];
[_tableView layoutIfNeeded];

你可能感兴趣的:(UITableView 的 tableHeaderView 使用Masonry布局)