一个自适应的 SwiftUI 容器,它基于水平尺寸类别在 标签视图 和 导航分割视图 之间切换。 这个框架使您能够轻松构建符合 Apple 人机界面指南 的 iPhone 和 iPad 应用。
iPhone | iPad |
---|---|
![]() |
![]() |
这是一个使用示例
@main
struct MyApp: App {
@State private var selectedTab = MyFirstTab.identifier
@State private var columnVisibility: NavigationSplitViewVisibility = .doubleColumn
var body: some Scene {
WindowGroup {
AdaptiveTabView(
appName: "My App",
selectedTab: selectedTab
) {
MyFirstTab()
MySecondTab()
MyThirdTab()
} defaultContent: {
MyDefaultContentView()
} defaultDetail: {
MyDefaultDetailView()
} sidebarExtraContent: {
Section {
ForEach(folders) { (folder) in
FolderSidebarCell(folder)
}
}
}
.selectedTabTransformer(transformer)
}
}
let transformer = SelectedTabTransformer { (kind, tabIdentifier) in
switch kind {
case .tabView:
let sharedTabViewIdentifiers = [
MyFirstTab.identifier,
MySecondTab.identifier,
MyThirdTab.identifier
]
if !sharedTabViewIdentifiers.contains(tabIdentifier) {
return MyFirstTab.identifier
}
case .sidebarView:
break
}
return tabIdentifier
}
}
extension MyFirstTab {
static let identifier = TabIdentifier("MyFirstTab")
}
struct MyFirstTab: View, TitleImageProviding {
let title = "My First Tab"
let systemImageName = "1.square"
let id = MyFirstTab.identifier
var body: some View {
...
}
}