swift - 你如何垂直居中 SwiftUI tabItem

标签 swift swiftui tabview 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 Item Not Centering

最佳答案

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

struct ContentView_Previews: PreviewProvider {

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

关于swift - 你如何垂直居中 SwiftUI tabItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57763358/

相关文章:

ios - Swift NSArray 下标一个 AnyObject 类型的值

ios - 'imageEdgeInsets' 在 iOS 15.0 中已弃用

ios - 根据使用的文本字段更改一个选择器 View 的数量

swiftui - 如何在不同 Stack 之间水平对齐多个对象

SwiftUI:如何在文本编辑器中禁用 "smart quotes"

tabs - Flutter tabview刷新问题

ios - 如何在 Swift 中组合正则表达式?

ios - 如何创建仅在使用 SwiftUI 打开应用程序时出现的警报?

flutter - 没有 Scaffold 和固定 Widget 的 TabBar 和 TabView

android - 更改 TabView 中的选项卡高度?