5

我正在使用 UICollectionViewFlowLayout。我的单元格包含高度(行数)不同的 UILabel。

似乎获得单元格高度的最佳方法是在 的子类中UICollectionViewCell,因为这是我设置布局并可以访问视图的内在大小的地方,但是:

collectionView: layout: sizeForItemAtIndexPath:在委托方法之前调用collectionView: cellForItemAtIndexPath:,这意味着在获得单元格的实际布局之前,我需要知道单元格的高度。

到目前为止,我想出的所有东西似乎都太复杂了,比如从固定的单元格高度开始,在单元格加载标签后引用实际高度,然后以正确的高度重新加载数据。有一个更好的方法吗?

4

1 回答 1

4

抱歉不行。

对于 UICollectionView 中动态大小的项目,您需要在创建单元格之前知道或计算单元格的大小。执行此操作的传统方法是将每一行的数据存储在一个数组中,然后计算该数据的大小collectionView:layout:sizeForItemAtIndexPath:

例如,如果您有一个要显示的文本数组,您可以将NSString对象存储在一个数组中,测量该字符串collectionView:layout:sizeForItemAtIndexPath:并返回大小。UICollectionView然后采用该大小并调用initWithFrame:setFrame:在配置单元格视图时。

如果它们不经常更改,缓存这些大小也不是一个坏主意。

于 2013-09-13T16:15:55.633 回答