首页 > 解决方案 > 你如何垂直居中 SwiftUI tabItem

问题描述

我使用 SwiftUI 创建了一个 TabView。我试图让 TabBar 中的 TabItems 垂直居中。但是,它们没有正确居中。

import SwiftUI

struct ContentView: View {
    var body: some View {
        TabView(selection: .constant(0)) {
            RouteList()
                .tabItem {
                    Image("subway-3")
                    Text("Trains")
                }.tag(0)

            VStack {
                Text("Tab 2")
            }
            .tabItem {
                Image("subway-3")
                Text("Lines")
            }.tag(1)

            VStack {
                Text("Tab 3")
            }
            .tabItem {
                Image(systemName: "star")
                Text("Slow Zones")
            }.tag(2)
        }
    }
}

在这里你可以看到这段代码的结果。

TabBar 项目未居中

标签: swiftswiftuitabviewtabitem

解决方案


您将无法将标签栏项目垂直居中,因为它们最终会超出安全区域。底部的空白区域是保存区底部边缘和屏幕底部边缘之间的区域。您可以将新款 iPhone 上的外观与一个缺口与旧款 iPhone 的外观进行比较,后者的保存区域一直延伸到屏幕边缘:

struct ContentView_Previews: PreviewProvider {

    static var previews: some View {
        Group {
            ContentView()
                .previewDevice(PreviewDevice(stringLiteral: "iPhone 8"))
            ContentView()
                .previewDevice(PreviewDevice(stringLiteral: "iPhone XR"))
        }
    }
}

推荐阅读