iOS 開發 UITableView tableHeaderView 自動佈局問題Masonry

背景:
在實際開發中,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撐開高度是兩個子視圖的高度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章