UICollectionView:contentSize和bounds有啥区别?

Posted

技术标签:

【中文标题】UICollectionView:contentSize和bounds有啥区别?【英文标题】:UICollectionView: What is the difference between contentSize and bounds?UICollectionView:contentSize和bounds有什么区别? 【发布时间】:2016-06-18 13:38:22 【问题描述】:

有什么区别:

self.collectionView.contentSize.heightself.collectionView.bounds.origin.y?

后者似乎总是比前者小?

任何清晰的草图将不胜感激。

【问题讨论】:

【参考方案1】:

contentSize是内容的大小,通过滚动显示。假设您有 10 个单元格的大小为 3600x1200。那么内容大小将是 3600x1200。 Bound 将是 collectionview 的实际框架。

更多信息

    contentSize 不是 UICollectionView 的直接属性。它源自UIScrollView。 check here

编码愉快。

【讨论】:

框架(边界)如何小于内容大小本身? 由于UICollectionView不是一次显示所有内容,它只是窗口化了一些内容,所以在这种情况下,内容大小必须大于帧大小。 self.collectionView.bounds.origin.y 通常大于UIScreen.mainScreen().bounds.height。那么它实际上不是 visible 区域的框架吗?任何草图将不胜感激。 以防万一,让您总共只有 2 个单元格,在这种情况下,假设大小为 100x200,并且您的 collectionView 的框架大小覆盖整个 viewController。在这种特殊情况下,collectionView 框架将大于内容大小。在这种情况下,无法滚动,因为没有任何东西可以显示,一切都显示出来了。 bounds 实际上派生自 UIView。我担心它实际上是可见区域。检查here【参考方案2】:

self.collectionView.bounds.origin.y 的值为 0。因为 UIView 的边界是由它自己的坐标系表示的矩形。 参考Cocoa: What's the difference between the frame and the bounds?

self.collectionView.contentSize.height = 滚动视图的 contentSize

让您有一个集合视图(垂直滚动),其框架为 (0,64,320,504),每个单元格的大小为 (100,100),您有 20 个项目。因此,集合视图的每一行包含 3 个单元格。现在,为了在collectionview 7行中容纳20个项目,我们可以通过垂直滚动查看所有这些项目。

collectionview 的实际大小为 (320,504),contentsize 为 (320,700)。

注意:假设collectionview是垂直滚动的,两行之间没有空格。

【讨论】:

以上是关于UICollectionView:contentSize和bounds有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

iOS Collection View Change Cell content on didSelectItemAt indexPath

如何在具有动态大小的单元格的 UICollectionViewFlowLayout 子类上正确设置节插入

折叠UICollectionView

-[UICollectionView _endItemAnimations] 中的 UICollectionView 断言失败

如何滚动另一个 UICollectionView 下方的 UICollectionView?

UICollectionView 单元内部已加载,但 UICollectionView 未显示