В моем представлении прокрутки я хочу получить текущую отображаемую страницу (возможно, страница - неправильный термин). Я не могу найти ни одной переменной, содержащей это. Но я думаю, что его нужно где-то держать, так как индикатор может показать, какой подвид прокрутки отображается в данный момент.
Это полностью скрыто от нас, или я могу получить к нему доступ?
ios
objective-c
iphone
cocoa-touch
uiscrollview
TheNeil
источник
источник
UIScrollViewDelegate
для получения текущей страницы при прокрутке пользователя!Я очень рекомендую вам использовать этот код
но если вы используете этот код, ваше представление не обязательно должно быть точно на странице, которую выдает indexOfPage. Это потому, что я также рекомендую вам использовать этот код только в этом методе
который вызывается, когда ваш scrollView заканчивает прокрутку и чтобы номер вашей страницы был действительно четким
Я рекомендую вам установить для вашего scrollView режим paged с помощью этого кода
Итак, наконец, это должно выглядеть так
источник
Я бы быстро сделал это в расширении:
Тогда просто позвоните:
источник
То же, что и выше, но как категория
источник
Другой способ :
источник
Просто разделите текущее смещение на размер страницы:
источник
Здесь уже есть несколько хороших ответов. Однако для сценариев, когда контент не помещается точно на страницу - и если вы, как и я, хотите использовать результат для a
UIPageControl
, то важно использоватьceil
функцию.Возьмем пример, когда у меня есть «четыре с небольшим» страницы контента.
Я буду основывать это на моем текущем примере из реальной жизни. Ширина размера контента 3140 точек. Исходя из размера рамки представления моей коллекции, ширина страницы составляет 728.
Итак, количество страниц равно:
Моему
numberOfPages
будет пять. Четыре из них будут отображаться полностью, а последняя из них - пятая страница - покажет оставшийся0.313
контент.Теперь
numberOfPages
пять означает, что индексы страниц будут 0, 1, 2, 3 и 4.Когда я смахиваю вправо, перемещаясь к окончательному смещению,
scrollViewDidEndDecelerating
метод дает окончательное смещение по оси X, равное 2412.Применяя расчет округления:
Это неверно. Страница, которую просматривает пользователь по смещению, должна быть:
Правильный расчет с использованием
ceil
:источник
Решение Aoakenfo потрясающее, это еще одно решение, объединяющее ваш код с функцией scrollViewDidScroll и PageController
источник
Для быстрого я бы просто использовал это
Довольно просто, он в основном берет позицию scrollview x, делит ее на ширину scrollview, а затем округляет.
источник
В xCode 7.x swift 2.x вы можете:
источник
Я извлек это из нескольких наших приложений ...
Полный исходный код здесь
источник
Вы используете UIPageControl? Если так, то у этого есть
currentPage
свойство. Если нет, я думаю, вам нужно рассчитать индекс страницы из смещения scrollView.источник
Если кто-то ищет способ сделать на C # для Xamarin
Этот геттер и сеттер должны предоставить вам текущую страницу, а также позволить вам прокрутить до указанной страницы.
источник
Расширение Swift 5.1+ UIScrollView (без ключевого слова return)
источник