iOS WebView 네이버 로그인 후 화면 깨짐 해결 (SafeArea 무시 / 상태바 사라짐)
iOS WebView 기반으로 앱을 만들면서 네이버 로그인을 붙였는데, 이상한 버그를 하나 만났다. 로그인까지는 문제없이 잘 된다. 그런데 로그인 이후부터 앱 화면이 전부 이상하게 깨지기 시작한다. 상단 상태바가 사라지고, SafeArea가 완전히 무시되면서 모든 화면이 풀스크린처럼 표시된다. 기존에는 정상적으로 보이던 페이지들도 전부 영향을 받는다. 처음에는 웹 쪽 문제라고 생각했다. CSS나 viewport 설정이 잘못된 줄 알고 이것저것 수정해봤는데 전혀 해결되지 않았다. 이상하게도 이 문제는 항상 발생하는 게 아니라 네이버 로그인 화면을 한 번 거쳤다가 돌아온 이후부터 발생했다. 이 시점에서 웹 문제가 아니라 iOS 쪽 문제일 가능성이 높다고 판단했다. 결론적으로 원인은 WebView의 SafeArea 처리와 네이버 로그인 과정에서의 화면 전환이 충돌하면서 발생한 문제였다. 네이버 로그인은 내부적으로 SafariViewController나 외부 웹뷰 형태로 화면이 전환되는데, 이 과정에서 iOS가 SafeArea를 다시 계산하지 않거나 WebView가 풀스크린 상태로 고정되는 경우가 있다. 특히 SwiftUI에서 아래와 같은 설정이 들어가 있으면 문제가 더 확실하게 나타난다. .ignoresSafeArea() 이 설정이 있는 상태에서 로그인 화면을 거치고 돌아오면 WebView가 계속 전체 화면을 덮어버리는 상태가 된다. 해결 방법은 생각보다 단순했다. 우선 .ignoresSafeArea() 설정을 제거하거나 꼭 필요한 영역에서만 제한적으로 사용하도록 수정했다. 이것만으로도 대부분의 경우 문제가 해결된다. 그리고 WebView를 감싸는 구조도 한 번 점검해봤다. 불필요하게 전체 화면을 덮는 구조 대신, SafeArea 기준으로 자연스럽게 렌더링되도록 단순하게 구성했다. 예를 들어 이런 식으로 정리했다. VStack { WebView(urlString: "https://example.com") } 그래도 로그인 이후 화면이 깨지는...


댓글
댓글 쓰기