[iOS] .modalPresentationStyle 에 대하여

김승환·2022년 11월 13일
0

iOS

목록 보기
1/4

아이패드용 앱을 개발하면서 두 개의 ViewController를 모달 형식에 순차적으로 띄워야 하는 상황이 있었다.

하나는 UIBlurEffect를 가진 UIVisualEffectView,
다른 하나는 가로로 스크롤 되는 UICollectionView.

BlurEffect가 먼저 crossDissolve 방식으로 transition 되어 나타나고 그 다음 CollectionView가 coverVertical 방식으로 나타난다.

하지만 여기서 문제가 있었다.
컬렉션보다 blur가 먼저 present되어 내가 앱 내에서 선택한 그 셀의 정보가 보이지 않았다.

문제의 원인이 뭔지 몰랐기에 두 뷰컨의 present의 순서를 바꿔보고, 한 뷰컨을 다른 뷰컨에 넣기도 하고 삽질을 많이 했었다.

또한 .modalPresentationStyle 속성에 대해서 크게 중요하게 생각하지 않았기 때문에 그냥 무작정 .overFullScreen 혹은 .overCurrentContext 로 속성값을 줬었다.

그러나........ .modalPresentationStyle 이 친구가 문제였다....

이 속성과 관련해서 해본 시도는

  • 두 뷰컨에 .overFullScreen 혹은 .overCurrentContext로 똑같이 주면 두 뷰컨중 blur 처리를 하는 뷰만 떴다.

  • .overFullScreen 속성을 준 뷰컨이 .overCurrentContext로 속성을 준 뷰컨보다 먼저 뜬다. (이 방식으로 문제를 해결했다. 이 방법으로 해결하기 까지 소요시간은 2시간...)






그래서 발견한 점은 이 속성값에도 호출된 뷰에서 나타나는 우선순위가 있는 것 같다.

아래 사진은 개발자 문서를 발췌해 온 것인데, .overCurrentContext는 원래 있던 뷰의 컨텐츠 위로 어떤 새로운 컨텐츠를 띄우는 것은 의미하고,

.overFullScreen 는 컨텐츠에 상관없이 디바이스의 화면을 다른 뷰로 덮어버리는 더 큰 의미 인 것 같다.


profile
사람의 마음을 사는 개발자가 꿈입니다. The Unexpected do The Unexpected.

0개의 댓글