iOS 中带有分页的 UICollectionView 的页数
Posted
技术标签:
【中文标题】iOS 中带有分页的 UICollectionView 的页数【英文标题】:Page count of UICollectionView with paging in iOS 【发布时间】:2012-11-17 18:24:55 【问题描述】:考虑启用流布局和分页的UICollectionView
(通过将pagingEnabled
设置为YES
)。
获取总页数的最简单方法是什么?
哪里是最适合更新总页数的位置(假设添加/删除项目、集合视图的大小或布局更改时它可能会发生变化)?
【问题讨论】:
【参考方案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.width
和frame.size.width
相等,那么您最终会得到2
,当有技术上只有一页?以上是关于iOS 中带有分页的 UICollectionView 的页数的主要内容,如果未能解决你的问题,请参考以下文章