W moim widoku przewijania chcę uzyskać bieżącą wyświetlaną stronę (może strona nie jest właściwym terminem). Nie mogę znaleźć żadnej zmiennej, która to przechowuje. Ale myślę, że trzeba to gdzieś trzymać, ponieważ wskaźnik jest w stanie pokazać, który podwidok widoku przewijania jest obecnie wyświetlany.
Czy jest to całkowicie przed nami ukryte, czy jest dla mnie sposób, aby uzyskać do niego dostęp?
ios
objective-c
iphone
cocoa-touch
uiscrollview
TheNeil
źródło
źródło
UIScrollViewDelegate
aby uzyskać bieżącą stronę, gdy użytkownik przewija!Całkiem polecam użycie tego kodu
ale jeśli użyjesz tego kodu, twój widok nie musi znajdować się dokładnie na stronie, którą daje indexOfPage. To dlatego, że również polecam używać tego kodu tylko w tej metodzie
która jest wywoływana, gdy scrollView kończy przewijanie i ma naprawdę ostry numer strony
Zalecam ustawienie scrollView na stronicowane włączone za pomocą tego kodu
Więc w końcu powinno tak wyglądać
źródło
Szybko zrobiłbym to w rozszerzeniu:
Następnie zadzwoń:
źródło
Jak wyżej, ale jako kategoria
źródło
Inny sposób :
źródło
Po prostu podziel bieżące przesunięcie przez rozmiar strony:
źródło
Jest tu już kilka dobrych odpowiedzi. Jednak w scenariuszach, w których treść nie pasuje dokładnie do strony - i jeśli tak jak ja chcesz użyć wyniku dla a
UIPageControl
, to konieczne jest użycieceil
funkcji.Weźmy przykład, w którym mam „cztery i trochę” strony treści.
Oprę to na moim obecnym przykładzie z życia. Szerokość rozmiaru treści to 3140 punktów. Na podstawie rozmiaru ramki widoku mojej kolekcji szerokość strony to 728.
Tak więc liczba stron jest równa:
Mój
numberOfPages
będzie miał pięć lat. Cztery z nich wyświetlą się w całości, a ostatnia - strona piąta - pokaże pozostałą0.313
treść.Teraz,
numberOfPages
gdy jest pięć, oznacza, że indeksy stron będą wynosić 0, 1, 2, 3 i 4.Kiedy przesuwam palcem w prawo, przewijając w kierunku końcowego przesunięcia,
scrollViewDidEndDecelerating
metoda daje końcowe przesunięcie X o wartości 2412.Stosowanie obliczenia zaokrąglenia:
To jest niepoprawne. Strona przeglądana przez użytkownika według przesunięcia powinna być:
Prawidłowe obliczenia przy użyciu
ceil
:źródło
Szybko użyłbym tego
Całkiem proste, w zasadzie przyjmuje pozycję scrollview x, dzieli ją przez szerokość scrollview, a następnie zaokrągla.
źródło
W xCode 7.x swift 2.x możesz:
źródło
Rozwiązanie Aoakenfo jest niesamowite, to kolejne rozwiązanie łączące Twój kod z funkcją scrollViewDidScroll i PageController
źródło
Wyodrębniłem to z kilku naszych aplikacji ...
Pełne źródło tutaj
źródło
Czy używasz UIPageControl? Jeśli tak, to ma
currentPage
właściwość. Jeśli nie, myślę, że będziesz musiał obliczyć indeks strony na podstawie przesunięcia scrollView.źródło
Jeśli ktoś szuka sposobu działania w języku C # dla platformy Xamarin
Ten program pobierający i ustawiający powinien również zapewnić bieżącą stronę, umożliwiającą przewijanie do określonej strony
źródło
Rozszerzenie Swift 5.1+ UIScrollView (pomijanie słowa kluczowego return)
źródło