Прокрутка Используя режим пейджинговой связи

UIScrollView класс поддерживает режим пейджинговой связи, ограничивающий инициируемое действие прокрутки пользователя прокруткой единственной экранной ценности содержания за один раз. Этот режим используется при отображении последовательного содержания, такого как электронная книга или ряд инструкций.

Конфигурирование режима пейджинговой связи

Конфигурирование представления прокрутки для поддержки режима пейджинговой связи требует, чтобы код был реализован в классе контроллера представления прокрутки.

Кроме стандартной инициализации представления прокрутки, описанной в Создании и Конфигурировании Представлений Прокрутки, необходимо также установить pagingMode свойство к YES.

contentSize свойство представления прокрутки разбивки на страницы установлено так, чтобы оно заполнило высоту экрана и что ширина является кратным числом ширины экрана устройства, умноженного на число страниц, которые будут выведены на экран.

Кроме того, индикаторы прокрутки должны быть отключены, потому что относительное расположение как пользователь затрагивает, экран не важен, или показан с помощью a UIPageControl.

Рисунок 5-1 показывает пример представления прокрутки, сконфигурированного в режиме пейджинговой связи. Реализация показанного приложения доступна в примере кода PageControl.

Рисунок 5-1  представление прокрутки в режиме пейджинговой связи и результатах действия прокрутки

Конфигурирование подпредставлений представления прокрутки разбивки на страницы

Подпредставления представления прокрутки разбивки на страницы могут быть сконфигурированы одним из двух способов. Если содержание является маленьким, Вы могли бы нарисовать все содержание сразу в единственном представлении, которое является размером представления прокрутки contentSize. В то время как это является самым простым реализовать, это не эффективно при контакте с большими предметными областями или содержанием страницы, занимающим время для рисования.

Когда Ваше приложение должно вывести на экран большое количество страниц, или рисование содержания страницы может занять время, Ваше приложение должно использовать многократные представления для отображения содержания, одного представления для каждой страницы. Это более сложно, но может значительно увеличить производительность и позволяет Вашему приложению поддерживать намного большие наборы дисплея. Пример PageControl использует этот многократный метод представления. Путем исследования примера кода Вы видите точно, как может быть реализован этот метод.

Поддержка большого количества страниц в представлении прокрутки разбивки на страницы может быть выполнена с помощью только трех экземпляров представления, каждый размер экрана устройства: одно представление выводит на экран текущую страницу, другой выводит на экран предыдущую страницу, и треть выводит на экран следующую страницу. Представления снова используются, поскольку пользователь просматривает страницы путем прокрутки.

Когда контроллер представления прокрутки инициализируется, все три представления создаются и инициализируются. Обычно представления являются пользовательским подклассом UIView, несмотря на то, что приложение могло использовать экземпляры UIImageView в подходящих случаях. Представления тогда расположены относительно каждого так, чтобы, когда пользователь прокручивает, следующая или предыдущая страница всегда была на месте, и содержание готово к дисплею. Контроллер ответственен за отслеживание, которых страница является текущей страницей.

Для определения, когда страницы должны быть реконфигурированы, потому что пользователь прокручивает содержание представление прокрутки требует делегата, реализующего scrollViewDidScroll: метод. Реализация этого метода должна отследить contentOffset из представления прокрутки, и когда это передает среднюю точку ширины текущего представления, представления должны быть реконфигурированы, переместив представление, которое больше не видимо на экране к позиции, представляющей следующую и предыдущую страницу (в зависимости от направления прокрученный пользователь). Делегат должен тогда сообщить представлению, что это должно нарисовать содержание, подходящее для нового расположения это представление.

При помощи этого метода можно вывести на экран большую сумму содержания с помощью минимума ресурсов.

Если рисование содержания страницы является трудоемким, Ваше приложение могло добавить дополнительные представления к пулу представления, расположив тех как страницы по обе стороны от следующих и предыдущих страниц, поскольку прокрутка происходит, и затем нарисуйте содержание страницы тех дополнительных страниц, когда текущее содержание прокручивает.