2012-03-16 2 views
29

На Android есть опрятный способ просмотра нескольких страниц данных с одинаковой компоновкой с помощью ViewPager и Fragments. Пользователь перемещается влево или вправо, а страницы меняются. Для всех страниц есть только один контроллер представления и один ресурс компоновки, но содержимое данных изменяется, когда пользователь просматривает. Существует также эффект анимации для прокрутки влево и вправо, где вы можете видеть, что содержимое следующей страницы уже загружено.Эквивалент ViewPager Android на iOS? Прокрутка/пролистывание страниц данных

Что эквивалентно этому на iOS?

+0

Я ищу то же самое. Я переношу приложение для Android в iOS и не уверен, использовать ли ScrollView, горизонтальный TableView, PageViewController и т. Д. Также я не уверен, как обрабатывать динамическое распределение или освобождение просмотров, которые были автоматическими в Android, поскольку каждая деталь представление было его собственным фрагментом, который был освобожден, когда больше не нужен ViewPager и Adapter и т. д. Что такое эквивалент? –

+1

Использование Container view и UIPageViewController мы можем это сделать. https://stackoverflow.com/a/45188331/4665694 –

ответ

36

Используйте UIScrollView с параметром pagingEnabled, установленным в поле YES. Обычно вместе с ним используется UIPageControl.

Если вы используете Google для подкачки «UIScrollView», вы можете найти множество руководств и примеров. Программа Apple предоставляет примерную программу PageControl.

IOS не обеспечивает какой-либо адаптер как класс, но вот учебник, который объясняет, как реализовать «виртуальные страницы», так что вы не должны инстанцировать все страницы сразу: http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html

21

Вы должны посмотреть на UIPageViewController. Имеется в наличии начиная с iOS 5.

+0

Спасибо, но похоже, что это навигационные контроллеры просмотра _between_ вместо использования адаптера данных для одного и тот же контроллер. У меня есть неопределенное количество «страниц», их содержимое загружается из веб-страницы. – Vanja

+1

Вы можете создать один класс ViewController с несколькими объектами из них для каждой страницы и добавить его в PageViewController. – Ingolmo

+0

Это правда. Вероятно, это способ сделать это на iOS. Однако мне придется поддерживать хотя бы iOS 4, поэтому я попытаюсь проверить, могу ли я использовать UISwipeGestureRecognizer. Спасибо :) – Vanja

6

Я создал пользовательский элемент управления для iOS, который действует аналогично viewPager для Android. Вы можете проверить это here.

+1

хороший контроль! Спасибо –

+1

so helpfull controller .. Спасибо Bro ... –

0

визит https://github.com/vowed21/HWViewPager

Это может помочь вам.

Унаследованный UICollectionView.

многоразовая Ce, (адаптер вероятного Андроида)

и включить изображение часть слева, справа.

+0

HI Там я также использую пейджер HWView в качестве подвидного представления в приложении из супер-представления, когда я вызываю этот HWViewpager, перезагружая данные, перезагружая данные всего представления. Plz поможет, если у вас есть представление об этом. –

0

Вы можете реализовать его самостоятельно, используя следующую идею.

Предположим, что мы хотим бесконечно петлю через 3 элементов (ячеек) - С0, С1, С2, мы можем генерировать фиктивные ячейки на левой и правой стороне центральных клеток, результат следующим образом,

C0 C1 С2 [С0 С1 С2] С0 С1 С2

клетки в кронштейне представляют собой клетки, которые мы видим через экран устройства, и если мы прокручивать влево,

С0 [С1 С2 С0] С1 С2 С0 С1 С2

в данный момент, force contentOffset, чтобы указать правую сторону данных фиктивных ячеек,

C0 [C1 C2 C0] C1 C2 C0 C1 C2 -> C0 C1 C2 C0 [C1 C2 C0] C1 C2

Он работает в одном механизме, когда вы крутите его вправо.

В моем решении ниже установка ширины позиции элемента равным его родительскому виду позволит решить вашу проблему.

https://github.com/DragonCherry/HFSwipeView

Если вы просто хотите просто проверить, как это работает, нажмите на ссылку ниже, и «нажмите, чтобы играть».

https://www.cocoacontrols.com/controls/hfswipeview

Только с помощью опции pagingEnabled в UIScrollView может работать в случае полного размера элемента ячейки, но он не будет работать должным образом, если вы хотите установить более узкую ширину элемента контента, чем его родитель (скроллинг) зрение. Проверьте эту функцию, обратившись к образцу cocoacontrols для «Sync» или «Edge Preview».

Смежные вопросы