SwiftUI - 我可以在 iPhone 上显示标签栏,在 iPad 上显示侧边栏吗?

rya*_*ndu 4 ios swift swiftui

我正在为在 iPhone 和 iPad 上运行的 iOS 开发 SwiftUI 应用程序。我想知道是否可以在 iPhone 上显示标签栏,但在 iPad 上显示垂直侧边栏以更好地利用大屏幕。标签栏和侧栏将具有相同的功能,在标签之间切换。它可能看起来像我在 twitter 上找到的这张图片,除非我不需要它的 macOs 版本。有人可以帮我吗?

Pra*_*lla 5

您需要添加条件检查,例如以下内容:

struct TabSideBar: View {

    #if os(iOS)
    @Environment(\.horizontalSizeClass) private var horizontalSizeClass
    #endif
    
    @ViewBuilder var body: some View {
        #if os(iOS)
        if horizontalSizeClass == .compact {
            TabBarContentView()
        } else {
            SideBarContentView()
        }
        #else //MacOSView
            SideBarContentView()
        #endif
    }
    
}
Run Code Online (Sandbox Code Playgroud)


Asp*_*eri 1

这是为不同设备明确分离视图的可能方法

struct ContentView: View {
    var body: some View {
        if UIDevice.current.userInterfaceIdiom == .pad {
            YourSidebarView()
        } else {
            YourTabView()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)