Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Page count of UICollectionView with paging in iOS

Consider a UICollectionView with flow layout and paging enabled (by setting pagingEnabled to YES).

What would be the simplest way of obtaining the total number of pages?

And where would be the most appropriate place to update the total number of pages (given that it might change if items are added/deleted, the size of the collection view changes or the layout changes)?

like image 975
hpique Avatar asked Nov 17 '12 18:11

hpique


2 Answers

The right answer should be:

If the UICollectionView scrolls horizontally:

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

If it scrolls vertically:

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

follow to wiki:

In mathematics and computer science, the floor and ceiling functions map a real number to the largest previous or the smallest following integer, respectively. More precisely, floor(x) is the largest integer not greater than x and ceiling(x) is the smallest integer not less than x.

Here is my result to check:

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
like image 141
nahung89 Avatar answered Nov 08 '22 04:11

nahung89


If the UICollectionView scrolls horizontally, you divide its contentSize's width to its frame's width:

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

If it scrolls vertically, you divide its contentSize's height to its frame's height:

int pages = floor(self.collectionView.contentSize.height /    
                  self.collectionView.frame.size.height) + 1;
like image 34
luvieere Avatar answered Nov 08 '22 05:11

luvieere