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.height
和 self.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 _endItemAnimations] 中的 UICollectionView 断言失败