iOS13에도 많은 변화가 있었죠?
지난 포스트에는 변경 사항에 대한 이슈들을 정리해보았으니 미처 못보신 분들은 보시고 추가해야될 사항있으면 댓글 환영합니다. :)
많은 변화 가운에 이번 포스트에는 Modal의 라이프 사이클에 대해 적어보려고합니다.
💡Modal Presentation Style
iOS13부터 Modal presentation Style의 디폴트 값이 full screen이 아닌 'automaic'으로 변경되었습니다.
XCode11업데이트 후 13.0으로 빌드 해보니 모달 형식이 아래와 같이 'page sheet'형태로 나타나는걸 볼 수 있으셨을 겁니다.
그렇다면 automatic은 무엇일까요?
세로화면에선 page sheet, 가로화면에선 full screen형태의 타입을 나타냅니다!
즉, 디폴드가 automatic으로 바꼈으니 이전 버전의 모달형식처럼 full screen으로 바꿔야한다면 전체를 바꿔야합니다
vc.modalPresentationStyle = .fullScreen
💡modal의 라이프 사이클
FirstVC와 SecondVC 두가지의 뷰컨트롤러가 있고, FirstVC에서 어떠한 버튼을 눌렀을때 SecondVC modal이 나타난다고 가정해 보도록 하죠.
-
기존의 fullscreen style의 모달 라이프 사이클
/* FullScreen Present */
-------------- [SecondVC : viewDidLoad] --------------
-------------- [FirstVC : viewWillDisappear] --------------
-------------- [SecondVC : viewWillAppear] --------------
-------------- [SecondVC : viewDidAppear] --------------
-------------- [FirstVC : viewDidDisappear] --------------
/* FullScreen Dismiss */
-------------- [SecondVC : viewWillDisappear] --------------
-------------- [FirstVC : viewWillAppear] --------------
-------------- [FirstVC : viewDidAppear] --------------
-------------- [SecondVC : viewDidDisappear] --------------
기존의 모달 형식은 위의 그림과 같이 FirstVC의 viewWillDisappear가 호출된 후 SecondVC의 라이프 사이클이 동작하며 View가 생성되고, FirstVC가 사라지게 됩니다.
즉, SecondVC가 나타나면 뒤에 FirstVC는 사라지게 되는걸 볼 수 있습니다.
-
sheet style의 모달 라이프
/* Sheet Present */
-------------- [SecondVC : viewDidLoad] --------------
-------------- [SecondVC : viewWillAppear] --------------
-------------- [SecondVC : viewDidAppear] --------------
/* Sheet Dismiss */
-------------- [SecondVC : viewWilldisappear] --------------
-------------- [SecondVC : viewDidDisappear] --------------
기존 fullscreen의 라이프 사이클과 다르게 firstVC에는 전혀 영향을 주지 않고 firstVC앞에 독립적으로 띄워지는 모달 형식인걸 볼 수 있습니다.
디폴트값이 automatic인 만큼 가로 세로 화면을 구현하는 앱일때 알아두시면 유용할 것 같네요. :)
'iOS' 카테고리의 다른 글
[iOS] Animation 방법(UIView.animate) (2) | 2019.12.23 |
---|---|
[iOS] 개발자 계정 및 인증서 가이드 (0) | 2019.10.31 |
[iOS] 13 이슈 대응 및 변경 사항 공유 (0) | 2019.09.25 |
[iOS] Library를 CocoaPods에 배포하는 방법 (0) | 2019.08.27 |
[iOS] Image Rendering Mode (0) | 2019.08.01 |