Hi,你好代码🐒。你见到这便文章,说明你可能遇见了,tableViewCell 里面潜逃collectionView ,tableVIewCell 高度需要适配问题。
那么,先看效果
效果图.gif
我面对的场景是,当前页面是个tableCell,cell 里面要在下一页面选择完内容后后,加载出collectionView。
操作步骤,
1, 在设置完collectionView 数据源后, 调用collectionView的 - (void)reloadData 方法
[self.myCollectionView reloadData];
// 为了解决,collectionView rload后,
// 不知道更新布局问题, 这个方法,在reload前后调用都可以,我在reload后调用
[self layoutIfNeeded];
}
2,然后在cell 里面要实现:
- (void)layoutSubviews {
[super layoutSubviews];
// 这里设置 cell的cotentView 的frame ,
// 前提是先获取 collectionView 的视图的高度。
CGFloat height = self.myCollectionView.collectionViewLayout.collectionViewContentSize.height;
self.myCollectionView.frame = CGRectMake(self.myCollectionView.wt_x, self.myCollectionView.wt_y, self.myCollectionView.wt_width, collectionContentSizeHeight);
// 默认cell 的高度 44
CGFloat contentHeight = 44;
if (collectionContentSizeHeight != 0) {
// 算出,collectionView 底部 + 距离底部距离。
contentHeight = self.myCollectionView.wt_bottom + 12;
}
self.contentView.frame = CGRectMake(0, 0, self.contentView.wt_width, contentHeight);
}
3,更新完cell 的contentView 的frame 后,你就可以在table的代理中更新,cell 的高度了。
网友评论