iOS Make a PageViewController

운영 체제: macOS Ventura 13.0.1
사용 버전: Xcode 14.1, SwiftUI, Swift, UIKit

iOS Make a PageViewControlle를 알아보겠습니다.

SwiftUI에서 PageView를 만들 건데요. PageViewController를 직접 사용할 수는 없습니다.
UIViewRepresentable 등을 사용해야 합니다.


아래 게시글을 참고하여 UIViewRepresentable을 하나 만들어 줍니다.




만들어진 swift 파일은 대략 아래와 같습니다.






20 번째 줄 makeUIViewController의 반환 타입은 UIPageViewController입니다.

21 번째 줄 UIPageViewController()에는 transitionStyle 전환 방식, navigationOrientation 스크롤 방향(가로, 세로) 항목이 들어갑니다.

38 번째 줄 controllers에는 parent의 pages가 UIHostingController()를 사용하여 배열로 들어갑니다.

UIHostingController는 UIKit에 SwiftUI를 띄울 때 사용합니다. 즉 PageView로 띄울 뷰들이 SwiftUI 뷰들이라는 뜻입니다.

43 번째 줄 pageViewController(viewControllerAfter)는 다음 화면으로 넘겼을 때 실행됩니다.

47 번째 줄 pageViewController(viewControllerBefore)는 이전 화면으로 넘겼을 때 실행됩니다.




29 번째 줄, updateUIViewController에는 아래와 같은 내용이 들어갑니다.

setViewControllers는 현재 pageViewController가 보여줄 페이지들을 나타냅니다.

현재 보일 UIViewController 리스트가 들어갑니다. direction에는 방향이 들어가고, animated에는 영상 효과가 들어갈지를 정합니다.






pageViewController(viewControllerAfter)에는 아래의 내용이 들어갑니다.

현재 위치를 index로 가져옵니다. index가 없다면 nil을 반환합니다.

그리고 + 1 한 것이 보여줄 뷰들의 총개수랑 똑같다면 nil을 반환합니다.

정상적이라면 index + 1 한 다음 페이지를 보여줍니다.







pageViewController(viewControllerBefore)에는 아래의 내용이 들어갑니다.

현재 페이지의 index를 구하고 없다면 nil을 반환합니다.

현재 index가 처음 페이지라면 nil을 반환합니다.

정상적이라면 index - 1 이전 페이지를 보여줍니다.







이제 UIPageViewController를 사용하기 위한 준비는 다 되었습니다.

SwiftUI 파일에 pages를 만들고

방금 만든 PageViewController()를 불러서 사용합니다.







실행 화면입니다.




끝.


카테고리: iOS

댓글

이 블로그의 인기 게시물

Python urllib.parse.quote()

Python OpenCV 빈 화면 만들기

tensorflow tf.random.uniform()

Android Notification with Full Screen

KiCad 시작하기 2 (PCB 만들기)

Android Minimum touch target size

Python bs4.SoupStrainer()

KiCad 시작하기 4 (기존 회로도 수정 및 추가)

음악 총보(Score), 파트보(Part)

tensorflow tf.expand_dims()