2012-11-17 53 views
9

考慮啓用流佈局和分頁的UICollectionView(通過將pagingEnabled設置爲YES)。在iOS中使用分頁的UICollectionView的頁數

獲得總頁數的最簡單方法是什麼?

哪裏可以找到最合適的位置來更新頁面總數(假設如果項目被添加/刪除,集合視圖的大小改變或佈局改變,它可能會改變)?

回答

6

如果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; 
+4

這假定沒有間距,並且所有項目具有相同的寬度和高度。 – hpique

+2

難道你不能使用'ceil'來代替'floor'並添加1嗎? – swilliams

+4

如果'content.width'和'frame.size.width'相等,那麼'ceil'會更'準確,因爲如果技術上只有一個頁面,最終會得到'2'。 –

5

正確的答案應該是:

如果UICol lectionView水平滾動:

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