tableHeaderView使用Masonry自动计算高度

操作步骤

1.设置tableHeaderView及其约束

- (DSProductDetailHeadView *)tableViewHeaderView{
    if(!_tableViewHeaderView){
        _tableViewHeaderView=[DSProductDetailHeadView new];
        _tableViewHeaderView.backgroundColor=[UIColor whiteColor];
        _tableViewHeaderView.delegate=self;
        
        //1.将自定义的视图设为tableView的头部视图
        self.contentTableView.tableHeaderView=_tableViewHeaderView;
        
        //2.设置tableView头部视图的约束,只需设置top和width约束就可以了
        [_tableViewHeaderView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.width.equalTo(self.contentTableView);
        }];
    }
    return _tableViewHeaderView;
}

2.设置tableHeaderView最底部子视图的约束

    UIView *couponView=[UIView new];
    couponView.backgroundColor=[UIColor cellMarginColor];
    [self addSubview:couponView];
    [couponView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.top.equalTo(couponPriceTitleLabel.mas_bottom).offset(kCommonMaxMargin);
        make.left.right.equalTo(self);
        make.height.mas_equalTo(kScreenWidth*0.25);
        
        //让最底部子视图的底部等于tableHeaderView的底部
        make.bottom.equalTo(self);
    }];

3.每次重新布局后,需要重新设置tableHeaderView的frame

#pragma mark - 网络请求
- (void)networking{
    WeakObj(self);
    //商品详情
    [DSProductDetailNetworkModule getProductDetailDataWithProductId:self.productId channelId:self.channelId SuccessBlock:^(NSURLSessionDataTask * _Nullable task, SPNetResponseModel * _Nullable responseModel) {
        if(IsSuccess(responseModel.code)){
            weakself.detailModel=[DSProductDetailModel mj_objectWithKeyValues:responseModel.data];
            
            //给tableHeaderView赋值数据
            weakself.tableViewHeaderView.productDetailModel=weakself.detailModel;
            
            //重新设置tableHeaderView的frame
            [weakself.contentTableView layoutIfNeeded];
            weakself.contentTableView.tableHeaderView=weakself.tableViewHeaderView;
            [weakself.contentTableView reloadData];
        }
    }];

你可能感兴趣的:(tableHeaderView使用Masonry自动计算高度)