2012-11-17 8 views
9

Rozważmy UICollectionView z włączonym układem przepływu i stronicowania (ustawiając pagingEnabled na YES).Liczba stron UICollectionView z stronicowaniem w iOS

Jaki byłby najprostszy sposób uzyskania całkowitej liczby stron?

A gdzie byłoby najbardziej odpowiednie miejsce do aktualizacji całkowitej liczby stron (biorąc pod uwagę, że może się zmienić, jeśli elementy są dodawane/usuwane, zmienia się rozmiar widoku kolekcji lub zmienia się układ)?

Odpowiedz

6

Jeżeli UICollectionView przesuwa się poziomo, podzielenie jej „szerokości równej szerokości jego ramy za s:

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

Jeśli przewija pionowo podzielenie jej contentSizecontentSize wysokość, na wysokości jego rama jest S:

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

który zakłada, że ​​nie ma odstępu, a wszystkie elementy mają taką samą szerokość lub wysokość. – hpique

+2

Nie można użyć 'ceil' zamiast uzyskać' floor' i dodać 1? – swilliams

+4

Nie użyłoby 'ceil' być * bardziej * dokładne, ponieważ jeśli' content.width' i 'frame.size.width' są równe, kończysz z' 2', gdy jest technicznie tylko jedna strona? –

5

Prawidłowa odpowiedź powinna być:

Jeżeli UICol przewija lectionView poziomo:

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

Jeśli przewija pionowo:

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

obserwacji do wiki:

w matematyce i informatyce, podłoga i funkcji sufitowych mapować rzeczywistą liczbę do największej poprzedniej lub najmniejszej następującej liczby całkowitej odpowiednio: . Dokładniej, podłoga (x) to największa liczba całkowita nie większa niż x i pułap (x) to najmniejsza liczba całkowita nie mniejsza niż x.

Oto mój wynik, aby sprawdzić:

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 
Powiązane problemy