사용자의 이목을 끌기 위한 화면전환 기법
정보의 흐름을 가지고 이동하는 Navigation Interface 와는 다르게 사용자의 시선을 끌 수 있도록 현재화면 위에 다른 화면을 띄워 표현하는 방식이다!
모달을 띄우는 것을 present
, 특정 선택을 통해 띄운 모달을 내리는 것을 dismiss
라고 한다.
모달을 띄우게 되면 presenting view controller
(현재 뷰 컨트롤러) 와 presented view controller
(나타나는 뷰 컨트롤러) 간의 관계가 형성된다.
뷰 컨트롤러의 프레젠테이션 스타일에 따라 뷰 컨트롤러가 나타나는 화면에 나타나는 모양이 달라진다. UIKit에 정의되어 있는 표준 프레젠테이션 스타일을 이용할 수도 있고 커스텀 프레젠테이션 스타일을 정의하는 것도 가능하다.
modalPresentationStyle
프로퍼티에 .fullScreen
과 같은 상수를 할당해 구현할 수 있다.
@IBAction func presentModal(_ sender: UIButton) {
guard let viewController = storyboard?.instantiateViewController(identifier: "PresentedViewController") as? PresentedViewController else { return }
viewController.modalPresentationStyle = UIModalPresentationStyle.fullScreen
self.present(viewController, animated: true, completion: nil)
}
@IBAction func dismissModal(_ sender: UIButton) {
self.dismiss(animated: true, completion: nil)
}