ios - 在哪里确定动态大小的 UICollectionViewCell 的高度?

标签 ios objective-c uicollectionview uicollectionviewcell

我正在使用 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/

相关文章:

ios - objective c 如何从外部访问 applicationDidFinishLaunching 变量

ios - 如何在滚动 Swift 时设置 UICollectionView 层不移动/静态

ios - UICollectionView 滑动

ios - Swift 在 indexPath 中使用 prepareForSegue

iphone - 从昨天开始,我无法再将 xcode 连接到我的 iPhone

ios - 协调器模式 - 使用 Storyboard 而不是 Xib

ios - __weak 貌似保留了对象

c++ - 更新到 Xcode9 后,我得到 C++ 需要所有声明的类型说明符

ios - 向 UICollectionViewCell 添加覆盖 View - 保持覆盖

ios - iPad-物镜-C-键盘-一切都从左向右移动,而不是向下移动