我正在使用 UICollectionViewFlowLayout。我的单元格包含高度(行数)不同的 UILabel。
似乎获取单元格高度的最佳方法是在 UICollectionViewCell
的子类中,因为这是我设置布局并可以访问 View 的固有大小的地方,但是:
collectionView: layout: sizeForItemAtIndexPath:
在 collectionView: cellForItemAtIndexPath:
委托(delegate)方法之前被调用,这意味着在我拥有实际布局之前我需要知道单元格高度细胞的。
到目前为止,我想出的一切似乎都太复杂了,比如从固定的单元格高度开始,在单元格加载标签后引用实际高度,并以正确的高度重新加载数据。有更好的方法吗?
最佳答案
不幸的是,没有。
对于 UICollectionView 中动态大小的项目,您需要在创建单元格之前知道或计算单元格的大小。执行此操作的传统方法是将每一行的数据存储在一个数组中,然后在 collectionView:layout:sizeForItemAtIndexPath:
中计算该数据的大小。
例如,如果您要显示一个文本数组,您可以将 NSString
对象存储在一个数组中,在 collectionView:layout:sizeForItemAtIndexPath:
中测量该字符串并返回尺寸。 UICollectionView
然后采用该大小并在配置单元格 View 时调用 initWithFrame:
或 setFrame:
。
如果这些大小不经常更改,那么缓存这些大小也是个不错的主意。
关于ios - 在哪里确定动态大小的 UICollectionViewCell 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790165/