Swift

Swift 화면 전환 방식 1. Present 방식

iosos 2023. 6. 22. 14:53

ViewController가 다른 ViewController를 호출하는 방식 (present)

다른 ViewController를 Modal로 띄움 

- UIViewController에 정의된 present 메소드를 사용 

 

다시 원래 화면으로 돌아올 때 

- presentingViewController?.dismiss(animated:)

 

full screen으로 화면 띄우기

- vc.modalPresentationStyle = .fullScreen

 

 

예)

 

1. 새로운 viewController 생성 후 viewController의 storyboard ID 생성

- viewController에 버튼 추가

 

 

 

 

 

 

2. ViewController에 Button Action 추가 

- instantiateViewController(withIdentifier : ) : "OtherViewController" 라는 Identifier를 가진 뷰 컨트롤러를 가져옴

- modalPresentationStyle = .fullScreen : 가져온 뷰 컨트롤러의 화면을 전체 화면으로 표시하도록 설정

- modalTransitionStyle = .coverVertical : 화면을 띄우는 방식으로 .coverVertical은 화면이 수직으로 슬라이딩 되는 방식 

- present() : 'otherVC' 뷰 컨트롤러를 현재 뷰 컨트롤러 위에 모달로 표시, completion은 전환 후 실행할 추가 작업을 설정 (생략 가능)

 

 

 

 

 

 

 

 

3. modalTransitionStyle 종류

- coverVertical : 새로운 뷰 컨트롤러가 이전 뷰 컨트롤러 위로 슬라이드 (기본 스타일)

- crossDissolve : 이전 뷰 컨트롤러의 페이드 아웃과 동시에 새로운 뷰 컨트롤러의 페이드 인. 전환 도중  서로 겹치는 모습을 보임

- flipHorizontal : 이전 뷰 컨트롤러가 회전하면서 뒤집어지고 새로운 뷰 컨트롤러 나타남

- particalCurl : 이전 뷰 컨트롤러가 페이지 말림 효과로 접힘. fullScreen이 꼭 설정되어 있어야 함 

 

 

 

 

 

 

 

 

 

4. 화면 되돌아가기 dismiss

 

- OtherViewController를 컨트롤 할 ViewController를 생성하여 버튼 action 설정

- presentingViewController : 현재 뷰 컨트롤러를 표시한 이전 뷰 컨트롤러를 참조 

- dismiss(animated: , completion:) : 현재 뷰 컨트롤러를 닫고 애니메이션 적용, completion 매개변수는 생략 가능

 

 

 

present 방식은 위에 덮는 것이기 때문에 계속해서 화면 이동을 한다면 메모리가 full 될 수 있음