【问题标题】: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?

后者似乎总是比前者小?

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

【问题讨论】:

    标签: objective-c swift cocoa-touch uicollectionview uicollectionviewlayout


    【解决方案1】:

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

    更多信息

    1. contentSize 不是 UICollectionView 的直接属性。它源自UIScrollViewcheck 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是垂直滚动的,两行之间没有空格。

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 2016-08-03
      • 2013-11-17
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      相关资源
      最近更新 更多