#swift
Вопрос:
Я пытаюсь реализовать прокрутку между двумя контроллерами просмотра, один из которых будет страницей сообщений, а другой-страницей камеры, аналогичной приложению snapchat. Если я не дал понять, что я прикрепил изображение с приложением, которое имеет точно такую же реализацию, как я пытаюсь сделать, у него есть 5 представлений, которые вы можете прокручивать между ними. изображение Теперь я попытался реализовать его несколькими способами. Один из них связан с UIPageViewController, фрагментом моего кода:
class ViewController: UIViewController , UIPageViewControllerDelegate { var chatVC = one() var cameraVC= two() var array = [UIViewController]() var arr = [UIViewController]() override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = .white self.array = [chatVC,cameraVC] self.arr = [chatVC] DispatchQueue.main.asyncAfter(deadline: .now() 1, execute: { self.presentPageVC() }) } func presentPageVC(){ var vc = UIPageViewController.init(transitionStyle: .scroll, navigationOrientation: .horizontal , options: nil) vc.delegate = self vc.dataSource = self vc.setViewControllers(self.arr, direction: .forward, animated: true, completion: nil) self.present(vc, animated: true, completion: nil) } func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -gt; UIViewController? { guard let index = self.array.firstIndex(of: viewController),indexgt;0 else {return nil} let beforeIndex = index - 1 return self.array[beforeIndex] } func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -gt; UIViewController? { guard let index = self.array.firstIndex(of: viewController), index lt; (self.array.count-1) else { return nil } var indexAfter = index 1 return self.array[indexAfter] }
С этой реализацией у меня есть одна проблема, когда я пытаюсь прокрутить последнюю страницу на cameraVC, справа от нее появляется вид позади нее. Как я мог отключить прокрутку, когда нет другой страницы ни до, ни после. Кроме того, я новичок в разработке программного обеспечения, если у кого-то есть лучшая идея для ее реализации, пожалуйста, дайте мне знать. Я застрял в попытке реализовать с помощью UICollectionView, потому что я не знаю, как преобразовать UIViewController в ячейку и как изменить ее в зависимости от делегата. Также при попытке добавить через UIScrollView я не понимаю, как я мог бы добавить подпросмотр UIViewController в UIScrollView, потому что он принимает только UIView. Заранее благодарю вас за помощь,
Комментарии:
1. Вы не выполнили основную настройку. Ваши
PageViewController
требованияsetViewControllers(_:direction:animated:completion:)
.2. @ElTomato дважды проверьте, что он там
3. Что это? vc.setViewКонтроллеры(self.arr, направление: .вперед, анимация: верно, завершение: ноль) И var chatVC = один()?
4. @ElTomato добавлен контроллер chatViewController, знаете ли вы лучшую реализацию для похожих фотографий snapchat, которые я предоставил, или вы знаете, как отключить прокрутку влево на первой странице и отключить прокрутку вправо на последней странице?
5. Откуда вы знаете, что они используют
UIPageController
? Мне кажется, что у них есть подклассUIViewController
для создания собственного представления вкладок.
Ответ №1:
Для тех, кто хочет, чтобы UIScrollView не отображал представление при прокрутке, нет существующих представлений для прокрутки.
scrollView.showsLargeContentViewer = false