본문 바로가기
iOS

[iOS/Swift] parentViewController가 보이는 Modal 띄우기

by 코코종 2022. 6. 27.

안녕하세요 코코종입니다.

오늘은 Modal(present)로 다른 뷰컨을 띄울 때 부모가 뒤에 보이도록 한번 해보고자 합니다.

대부분 .automatic이나 .fullScreen으로 모달을 띄우는데요, automatic으로는 아래와 같이 띄울수는 있지만 fullScreen에서는 생각한대로 모달을 띄울수 없습니다. 

.automatic + bgView.backgroundColor = brown
.automatic + bgView.backgroundColor = .clear


.fullScreen + bgView.backgroundColor = .clear

어라랏..? 뭔가 고장난것 처럼 보이네요..?(내 쓈장의 새꽈른 불렉)

첨부한 Hierarchy를 참고해보면 이미 부모 VC는 보이지 않고 그 뒤에 윈도우씬이 보이네요. 즉 fullScreen은 부모를 보여주지 않는 것으로 보입니다.

 

해결법부터 알려드리자면 modalPresentationStyle = .overCurrentContext 로 하시면 됩니다. 그럼 아래와 같이 부모 바로 위에 modal이 되게 됩니다. 만약에 반투명하게 하고싶다면 bgView(child의 상단부분)의 alpha값을 0.5로 하면 됩니다.(실제로는 red)

 

공식문서에 가먼 (진짜 조금) 자세한 설명이 있습니다. 이를 이용하면 parentVC를 같이 보여주며 childVC를 modal로 띄울 수 있습니다!

열어분들은 저처럼 alpha, opacity, opaque 이런거 다 바꿔보고 하지 마세요 ㅎ... 그럼 이만~