SwiftUI의 TabView는 tabViewStyle(_:)을 사용하여 다양한 스타일을 적용할 수 있습니다. 공식 문서에서 제공하는 TabViewStyle의 종류와 특징을 알아봅시다!
automatic
시스템이 자동으로 적절한 스타일을 적용합니다.
- 기본적으로 tabBarOnly 스타일을 사용하지만, 특정 상황에서는 page 스타일이 적용될 수 있습니다.
- 플랫폼과 컨텍스트(예: iOS, iPadOS, macOS)에 따라 달라질 수 있습니다.
플랫폼에 따라 다른 스타일을 사용하지만, iOS 에서는 기본적으로 Tab bars를, iPadOS와 macOS에서는 Tab views를 사용합니다.
tabBarOnly
하단 탭바를 표시하는 기본적인 TabView 스타일입니다.
- iOS에서 기본값.
- 하단에 UITabBar처럼 탭바가 고정됩니다.
- 사용자가 직접 스와이프로 전환할 수 없으며, 탭바를 눌러 전환해야 합니다.
page
페이지 스와이프 방식의 TabView 입니다.
- tabBar에서 사용할 수 없었던 스와이프로 전환이 가능합니다.
- 기본적으로 페이지 인디케이터(페이지 점)가 표시되지 않음.
- page(indexDisplayMode:)를 사용하면 인디케이터 표시 모드를 설정할 수 있음.
page(indexDisplayMode:)
page 스타일에 페이지 인디케이터 표시 모드를 추가한 스타일입니다.
- .never: 페이지 인디케이터 숨김.
- .always: 페이지 인디케이터 항상 표시.
- .automatic: 시스템이 적절히 결정.
verticalPage
세로 스와이프 방식의 TabView입니다.
- watchOS 전용 스타일입니다.
sideBarAdaptable
사이드바와 탭바를 상황에 맞게 조절하는 스타일입니다.
- iPad 및 macOS에서 사용하면 UISplitViewController처럼 동작하여 사이드바 형태로 표시됨.
- iPhone에서는 일반적인 tabBarOnly 스타일로 적용됨.
- iOS 17 이상에서 지원됨.
💡 정리
스타일 | 특징 | 최소 지원 버전 |
automatic | 시스템이 적절한 스타일 자동 선택 | iOS 14+ |
page | 좌우 스와이프 가능, 페이지 인디케이터 없음 | iOS 14+ |
page(indexDisplayMode:) | page 스타일 + 페이지 인디케이터 설정 가능 | iOS 14+ |
verticalPage | 위아래 스와이프 가능, 페이지 인디케이터 없음 | iOS 17+ |
sideBarAdaptable | iPad/macOS에서는 사이드바, iPhone에서는 기본 탭바 | iOS 17+ |
tabBarOnly | 일반적인 하단 탭바 스타일 | iOS 14+ |