Эквивалент Android ViewPager на iOS? Прокрутка/пролистывание страниц данных
На Android существует аккуратный способ просмотра нескольких страниц данных с одним и тем же макетом с помощью ViewPager и Fragments. Пользователь перемещается влево или вправо, а страницы меняются. Там только один контроллер представления и один ресурс макета для всех страниц, но содержимое данных изменяется, когда пользователь просматривает. Также эффект анимации для прокрутки влево и вправо, где вы можете увидеть содержимое следующей страницы, уже загружен.
Что эквивалентно этому в iOS?
Ответы
Ответ 1
Используйте UIScrollView
, а свойство pagingEnabled
установлено в YES. Обычно UIPageControl
используется вместе с ним.
Если вы используете Google для "UIScrollView paging", вы можете найти множество руководств и примеров. Apple предоставляет программу PageControl.
iOS не предоставляет какой-либо класс, подобный адаптеру, но вот учебник, в котором объясняется, как реализовать "виртуальные страницы", чтобы не создавать экземпляры сразу всех страниц: http://cocoawithlove.com/2009/01/multiple-virtual-pages-in-uiscrollview.html
Ответ 2
Вы должны посмотреть UIPageViewController.
Его доступно с iOS 5.
Ответ 3
Я создал настраиваемый элемент управления для iOS, который действует аналогично android viewPager. Вы можете проверить это здесь.
Ответ 4
посетите https://github.com/vowed21/HWViewPager
Это может помочь вам.
Унаследованный UICollectionView.
Reuseable Cell, (вероятно, Android-адаптер)
И разрешить часть предварительного просмотра левой, правой стороны.
Ответ 5
Вы можете реализовать его самостоятельно, используя следующую идею.
Предположим, что мы хотим бесконечно петли через 3 элемента (ячейки) - C0, C1, C2, мы можем генерировать фиктивные ячейки в левой и правой частях центральных ячеек, результат следующим образом:
C0 C1 C2 [C0 C1 C2] C0 C1 C2
Ячейки в скобках - это ячейки, которые мы видим через экран устройства, и если мы прокручиваем влево,
C0 [C1 C2C0] C1 C2C0 C1 C2
в данный момент, force contentOffset, чтобы указать правую сторону данных фиктивных ячеек,
C0 [C1 C2C0] C1 C2C0 C1 C2- > C0 C1 C2C0 [C1 C2C0] C1 C2
Он будет работать в том же самом механизме, когда вы прокрутите его вправо.
В моем решении ниже установка ширины представления элемента элемента равным его родительскому виду позволит решить вашу проблему.
https://github.com/DragonCherry/HFSwipeView
Если вы просто хотите проверить, как это работает, нажмите ссылку ниже и "нажмите, чтобы играть".
https://www.cocoacontrols.com/controls/hfswipeview
Просто использование параметра pagingEnabled в UIScrollView может работать в случае полноразмерного элемента ячейки, но он не будет работать должным образом, если вы хотите установить более узкую ширину элемента контента, чем его родительский (прокручиваемый) вид. Проверьте эту функцию, обратившись к образцу cocoacontrols для "Sync" или "Edge Preview".