将 UI CollectionView 自动调整为其内容

Posted

技术标签:

【中文标题】将 UI CollectionView 自动调整为其内容【英文标题】:Autosize UI CollectionView to it's content 【发布时间】:2013-05-23 14:29:16 【问题描述】:

我正在使用具有固定大小的 CollectionViewCells 的 UICollectionView。我在带有 UIPopoverController 的 popOver 中显示此 CollectionView。

我的目标是 popOver 自动调整为 CollectionView 的内容。因此,如果我只有 4 个单元格,那么它应该很小。如果我有更多的细胞,它应该更大。我想避免popOver中留下的空白。

所以我不想要一个固定的 popOver 大小,而是一个取决于 CollectionView 中单元格数量的可变大小。

有什么建议吗?

【问题讨论】:

【参考方案1】:

我自己也很难弄明白,但最终还是明白了。您必须访问 Collection View 的 collectionViewLayout 属性,然后使用 collectionViewContentSize 方法来获取内容的大小。然后,您可以使用它们通过设置框架来调整集合视图的大小。

CGRect rectangle;
rectangle = _collectionView.frame;
rectangle.size = [_collectionView.collectionViewLayout collectionViewContentSize];
_collectionView.frame = rectangle;

现在您的集合视图已根据其内容调整大小,您可以根据集合视图大小设置 popOver 的大小。它可能看起来像这样。

popOver.frame = _collectionView.frame;

[popOver sizeToFit];

【讨论】:

适用于 ios 7,但在 iOS 8 中仍然存在问题

以上是关于将 UI CollectionView 自动调整为其内容的主要内容,如果未能解决你的问题,请参考以下文章

为不同的 iPhone 设备自动调整 CollectionView 单元的大小

自调整collectionview自动设置contentoffset零

Xcode 7 ui 自动化 - 通过 tableview/collectionview 循环

CollectionView 标头不会在自动旋转时调整大小

如何使用自动布局动态调整具有固定宽度的collectionview单元格高度?

我在自定义 TableViewCell 中有一个 UICollectionView,但我无法自动调整 CollectionView 的大小