Jest kilka dobrych odpowiedzi tutaj już.Jednak w przypadku scenariuszy, w których zawartość nie pasuje dokładnie do strony - i jeśli chcesz, podobnie jak ja, chcesz użyć wyniku dla numeru UIPageControl
, konieczne jest użycie funkcji ceil
.
Weźmy przykład, w którym mam "cztery i trochę" strony treści.
Opieram to na moim obecnym przykładzie z życia. Szerokość treści wynosi 3140 punktów. Opierając się na moim zdaniem kolekcja rozmiar ramki, szerokość strony to 728.
Więc liczba stron wynosi:
3140/728 = 4.313
My numberOfPages
będzie pięć. Cztery z nich pokażą się w całości, a na końcu - na stronie piątej - pokaże pozostały 0.313
treści.
Teraz numberOfPages
jest pięć oznacza, że strona będzie indeksy 0, 1, 2, 3 i 4.
Kiedy przesunąć w prawo, w kierunku stronicowania końcowe przesunięcie metoda scrollViewDidEndDecelerating
dało końcowe przesunięcie w od 2412.
Zastosowanie obliczeń zaokrągleń:
2412/728 = 3.313 then rounded = 3
To błędne. użytkownik przegląda strony przez przesunięcie powinno być:
Offset/Page User Is Viewing
0 0
728 1
1456 2
2184 3
2412 4
Prawidłowe obliczenie używając 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
}
naprawdę nie wydaje się niedopatrzenia ze strony Apple'a ... – elsurudo
Nie zapomnij użyć 'UIScrollViewDelegate' uzyskać bieżącej strony, gdy użytkownik przewija! –
Może to powodować problemy podczas obracania. –