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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容