【问题标题】:Page count of UICollectionView with paging in iOSiOS 中带有分页的 UICollectionView 的页数
【发布时间】:2012-11-17 18:24:55
【问题描述】:

考虑启用流布局和分页的UICollectionView(通过将pagingEnabled 设置为YES)。

获取总页数的最简单方法是什么?

哪里是最适合更新总页数的位置(假设添加/删除项目、集合视图的大小或布局更改时它可能会发生变化)?

【问题讨论】:

    标签: iphone ios ios6 uipagecontrol uicollectionview


    【解决方案1】:

    正确答案应该是:

    如果 UICollectionView 水平滚动:

    int pages = ceil(self.collectionView.contentSize.width /    
                       self.collectionView.frame.size.width);
    

    如果垂直滚动:

     int pages = ceil(self.collectionView.contentSize.height /    
                       self.collectionView.frame.size.height);
    

    关注wiki:

    在数学和计算机科学中,地板和天花板函数 将实数映射到最大的前面或最小的后面 整数,分别。更准确地说, floor(x) 是 不大于 x 和上限 (x) 的最大整数 是不小于x的最小整数。

    这是我要检查的结果:

    ceil(2.0/5.0) = 1.000000
    ceil(5.0/5.0) = 1.000000
    ceil(6.0/5.0) = 2.000000
    ceil(10.0/5.0) = 2.000000
    ceil(11.0/5.0) = 3.000000
    

    【讨论】:

      【解决方案2】:

      如果UICollectionView 水平滚动,则将其contentSize 的宽度除以其框架的宽度:

      int pages = floor(self.collectionView.contentSize.width /    
                        self.collectionView.frame.size.width) + 1;
      

      如果它垂直滚动,则将其contentSize 的高度除以其框架的高度:

      int pages = floor(self.collectionView.contentSize.height /    
                        self.collectionView.frame.size.height) + 1;
      

      【讨论】:

      • 假设没有间距,并且所有项目具有相同的宽度或高度。
      • 你不能使用ceil而不是得到floor并加1吗?
      • 不会使用ceil 更准确,因为如果content.widthframe.size.width 相等,那么您最终会得到2,当有技术上只有一页?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      相关资源
      最近更新 更多