systemLayoutSizeFitting在cell中使用

使用場景

某個tableView A的某個cell A上有一個tableView B,tableView B上的cell高度是動態,要求tableView A的cell A的高度要和tableView B的高度一樣。

效果圖

0.table嵌套table.jpg

cell A中的核心代碼:

- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority{
    [self.tableView layoutIfNeeded];
    CGFloat h = self.tableView.contentSize.height;
    return CGSizeMake(targetSize.width, h);
}

systemLayoutSizeFittingSize方法返回了當前view的寬高

注意:

  1. 如果tableView B上的cell高度是動態的,需要設置tableview的estimatedRowheight屬性,且盡量小一些,如1。
  2. 如果tableView B上的cell高度是固定的,需要設置tableview的sectionHeaderHeight和sectionFooterHeight為0.0。
  3. tableView的代理方法heightForRow方法不實現,才會調用systemLayoutSizeFittingSize
    (Cell潛逃tableView還是有問題的,嵌套collectionView沒問題)

demo地址:https://github.com/yangguanghei/DynamicTableView.git

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容