Ci sono già alcune buone risposte qui. Tuttavia, per gli scenari in cui il contenuto non si adatta esattamente a una pagina e se, come me, desideri utilizzare il risultato per un UIPageControl
, è essenziale utilizzare ilceil
funzione.
Facciamo un esempio in cui ho "quattro e un po '" pagine di contenuto.
Baserò questo sul mio attuale esempio di vita reale. La larghezza della dimensione del contenuto è 3140 punti. In base alle dimensioni del frame della vista della raccolta, la larghezza della pagina è 728.
Quindi il numero di pagine è uguale a:
3140 / 728 = 4.313
Il mio numberOfPages
sara 'cinque. Quattro dei quali verranno visualizzati per intero, e l'ultimo dei quali - pagina cinque - mostrerà il 0.313
contenuto rimanente .
Ora, numberOfPages
essere cinque significa che gli indici di pagina saranno 0, 1, 2, 3 e 4.
Quando scorro verso destra, sfogliando verso l'offset finale, il file scrollViewDidEndDecelerating
metodo fornisce un offset X finale di 2412.
Applicazione del calcolo dell'arrotondamento:
2412 / 728 = 3.313 then rounded = 3
Non è corretto. La pagina che l'utente sta visualizzando per offset dovrebbe essere:
Offset / Page User Is Viewing
0 0
728 1
1456 2
2184 3
2412 4
Il calcolo corretto utilizzando ceil
:
private func pageForOffset(offset:CGFloat, pageWidth width:CGFloat) -> Int
{
let page = Int(ceil(offset / width))
NSLog("\(__FUNCTION__) offset \(offset) width \(width) page \(page) ")
return page
}
UIScrollViewDelegate
per ottenere la pagina corrente quando l'utente scorre!