masonry 实现tableview headerview高度自适应

一: 第1次踩坑:

设置headerview 约束

#import "EditorHeaderView.h"
- (void)bankViewInit{
    [self addSubview:self.titleLabel];
    [self addSubview:self.contentPromptLabel];
    [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self);
        make.left.right.equalTo(self);
        make.height.mas_equalTo(140);
    }];
  [self.contentPromptLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.titleLabel.mas_bottom);
        make.left.right.equalTo(self);
        make.height.mas_equalTo(100);
        // 自适应高度
        make.bottom.equalTo(self);
    }];
  // self 自适应高度
    CGFloat height = [self systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
    CGRect frame = self.frame;
    frame.size.height = height;
    self.frame = frame;
}

将headerview设置为tableview头视图

    EditorHeaderView *headerView = [[EditorHeaderView alloc] init];
    self.tableView.tableHeaderView = headerView;

一: 第2次踩坑:

代码如下:

/** tableview-HeaderView */
    self.positionTableView.tableHeaderView = self.tableHeaderView;
    [self.tableHeaderView addSubview:self.netWorthView];
    [self.tableHeaderView addSubview:self.calendarView];
    [self.tableHeaderView addSubview:self.accountInfoView];
    [self.tableHeaderView addSubview:self.positionPromptLable];
    [self.netWorthView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.tableHeaderView);
        make.left.equalTo(self).offset(leftOffset);
        make.right.equalTo(self).offset(-leftOffset);
        make.height.mas_equalTo(CF_BitMap_BY_SIZE(340));
    }];
    [self.calendarView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.netWorthView.mas_bottom);
        make.left.equalTo(self.positionTableView).offset(leftOffset);
        make.right.equalTo(self.positionTableView).offset(-leftOffset);
        make.height.mas_equalTo(CF_BitMap_BY_SIZE(5));
    }];
    [self.accountInfoView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.calendarView.mas_bottom);
        make.left.equalTo(self.positionTableView).offset(leftOffset);
        make.right.equalTo(self.positionTableView).offset(-leftOffset);
        make.height.mas_equalTo(CF_BitMap_BY_SIZE(5));
    }];
    [self.positionPromptLable mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(self.accountInfoView.mas_bottom);
        make.left.equalTo(self.positionTableView).offset(leftOffset);
        make.right.equalTo(self.positionTableView).offset(-leftOffset);
        make.height.mas_equalTo(CF_BitMap_BY_SIZE(5));
        make.bottom.equalTo(self.tableHeaderView).priorityHigh();
    }];
    {
        /** 高度自适应 */
        UIView *headerView = self.tableHeaderView;
        CGFloat height = [headerView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
        CGRect headerFrame = headerView.frame;
        headerFrame.size.height = height;
        headerView.frame = headerFrame;
        self.positionTableView.tableHeaderView = headerView;
    }

你可能感兴趣的:(masonry 实现tableview headerview高度自适应)