[SwfitUI] 아이패드 화면에서 어플 뷰가 전체화면으로 안보이고, 분할뷰 아이콘이 보일때 원인(NavigationView) 및 해결방법
아이폰에서 정상이던 화면인데, 앱스토어에 등록하려고 보니, 아이패드13인치 스크린샷도 필수로 업로드하란다.
그래서 아이패드에서 실행해보는데, 오잉? 내가 생각한 의도와 다르네?
오늘 또 하나 배워서 기록으로 남긴다.

이게 iPad에서 왼쪽 좁은 공간에만 표시되는 문제가 발생했는데, 원인은 NavigationView이다.

✅ 원인 요약
NavigationView
는 iPhone에서는 기본적인 탐색 구조로 잘 작동하지만,
iPad에서는 자동으로 Split View 모드로 바뀌며, 기본적으로 좌측 사이드바 너비만 차지합니다.
그래서 iPad에서는:
NavigationView
안에 콘텐츠가 하나만 있을 경우 → 왼쪽에만 표시- 오른쪽 detail view가 없음 → 화면이 비어 보임
✅ 해결 방법
🔧 해결법 1: NavigationStack
으로 교체 (iOS 16+)
NavigationView
는 이제 구식입니다. iOS 16 이상에서는 NavigationStack
을 사용하면 Split View 없이 전체 너비를 사용합니다.
struct HomeView: View {
var body: some View {
NavigationStack {
VStack {
Text("홈 화면입니다")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color(.systemBackground))
}
}
}
🔧 해결법 2: NavigationView
+ .navigationViewStyle(.stack)
강제 설정
만약 NavigationView
를 계속 써야 한다면, 스타일을 강제로 iPhone 스타일로 설정해서 iPad에서도 전체 너비 사용하게 만들 수 있습니다:
struct HomeView: View {
var body: some View {
NavigationView {
VStack {
Text("홈 화면입니다")
}
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color(.systemBackground))
}
.navigationViewStyle(StackNavigationViewStyle()) // 핵심!
}
}
이 설정이 없으면 iPad에서는 NavigationView
가 SplitView처럼 동작해서 왼쪽 좁은 영역만 씁니다.
✅ 최종 팁 요약
상황 | 해결 방법 |
---|---|
SwiftUI에서 iPad에 맞게 전체 화면으로 보여주고 싶음 | NavigationStack 사용 |
iOS 14–15 지원 필요 | NavigationView + .navigationViewStyle(StackNavigationViewStyle()) |
각 뷰가 전체 화면을 쓰도록 설정 | .frame(maxWidth: .infinity) + .background(...) |