Swift image slider / carousel UIPageViewController vs Scroll View

#ios #swift #xcode #uiscrollview #uipageviewcontroller

#iOS #swift #xcode #uiscrollview #uipageviewcontroller

Вопрос:

Я нашел эти примеры создания слайдера изображений / карусели. Один использует UIPageViewController, а другой — scrollview

В моем приложении мне нужно встроить слайдер изображения в contentview для VC, затем также добавить щелчок для увеличения, чтобы просмотреть изображение в полноэкранном режиме. Итак, каковы плюсы / минусы использования UIPageViewController или scrollview?

Глядя на два примера, они выглядят так, как будто ведут себя одинаково рядом с UIPageViewController, показывая точки / индикаторы

Комментарии:

1. ScrollView позволяет увеличивать естественным образом (для этого есть свойства maximumZoomScale и minimumZoomScale ). Однако для PageController вам необходимо выполнить масштабное преобразование ( CGAffineTransformMakeScale ) в представлении контроллера.

Ответ №1:

Я бы не рекомендовал использовать UIScrollView (слишком много работы / вероятность ошибок, сбрасывающих contentOffset ScrollView для плавного перемещения по галерее).

Когда я реализовал галерею скользящих изображений раньше, я использовал UICollectionView. Границы CollectionViewCell совпадают с границами родительского CollectionView, ячейка содержит ImageView, прикрепленный к краям ячейки, а направление прокрутки CollectionView установлено в горизонтальное.

Вы можете добавить UIPageControl поверх UICollectionView, если хотите, это не обязательно важная функция. В качестве альтернативы использованию UIPageControl я добавил UILabel для отображения над экранными координатами UICollectionView и обновления его значения на основе количества элементов и текущей отображаемой ячейки в CollectionView. Например, 1/4 -> 2/4 и т.д.

Комментарии:

1. Хорошо, я попытаюсь создать его таким образом. Но для того, чтобы добавить «нажмите, чтобы включить полноэкранный режим», должен ли я перейти к другому UIPageViewController, который находится в полноэкранном режиме?