【问题标题】:How do I dynamically size UICollectionViewCell's height based on content?如何根据内容动态调整 UICollectionViewCell 的高度?
【发布时间】:2015-09-02 00:38:18
【问题描述】:

这样做的过程是什么?

我发现了sizeForItemAtIndexPath,但我不确定我在那个方法中做了什么。我是否创建一个新的UICollectionViewCell,添加我的内容,然后返回该单元格的大小?

我是否需要打开 AutoLayout 并设置约束?如果这已经得到回答,我很抱歉。我一直在搜索 stackoverflow,但还没有找到有效的解决方案。

【问题讨论】:

  • 你应该看看 - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize withHorizo​​ntalFittingPriority:(UILayoutPriority)horizo​​ntalFittingPriority verticalFittingPriority:(UILayoutPriority)verticalFittingPriority
  • 我是否需要为我的单元设置约束才能使用它?我收到了Warning once only: Detected a case where constraints ambiguously suggest a size of zero for a collection view cell's content view. We're considering the collapse unintentional and using standard size instead.,但我的手机没有出现。

标签: ios objective-c uicollectionviewcell


【解决方案1】:

你需要:

  1. 在单元格的contentView 上设置自动布局约束,总而言之,将左边缘绑定到右边缘,将上边缘绑定到下边缘。这就是单元格将如何表达它想要的大小。

  2. 实现sizeForItemAtIndexPath,因为您不会提供每个单元格的大小。

  3. estimatedItemSize 设置为您的 UICollectionViewFlowLayout 对象上相当大的值。

a repo with an example

【讨论】:

  • 我在 xib 上设置了 AutoLayout,对所有项目设置了约束,关闭了 sizeForItemAtIndexPath 并将 estimatedItemSize 设置为 400x500。然而,布局仍然显示小的默认网格UICollectionViewCells。
  • iOS 9(填空发帖)
  • 等等,没关系,我搞定了。我错误地设置了estimatedItemSize。现在它出现了! :) 编辑:你有更多关于它是如何工作的信息吗?当我旋转屏幕时,我的对象没有跨越整个水平视图。
  • 老实说,我发现 UITableView 的自动行调整比 UICollectionView 的自动调整更可靠。我注意到 8.3 的 repo demo 在 9.0 中被破坏了,我不明白为什么。如果问题出在测试版中,我不会感到惊讶。
猜你喜欢
  • 1970-01-01
  • 2012-05-21
  • 2012-07-29
  • 1970-01-01
  • 2018-12-21
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多