自适应标签视图

一个自适应的 SwiftUI 容器,它基于水平尺寸类别在 标签视图导航分割视图 之间切换。 这个框架使您能够轻松构建符合 Apple 人机界面指南 的 iPhone 和 iPad 应用。

iPhone iPad
Preview iPhone Preview 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 {
        ...
    }
}