SwiftUI - 基于设备的自定义 TabBar 高度

标签 swift swiftui tabbar

enter image description here

我正在尝试根据设备设置自定义 TabBar 的高度,我的代码:

struct MyTabBar: View {
    @Binding var index: Int

    var body: some View {
        HStack {
            Button(action: {
                self.index = 0
            }) {
                Image(ImageText.iconHome.image)
            }

            Spacer(minLength: 0)

            Button(action: {
                self.index = 1
            }) {
                Image(ImageText.iconBell.image)
            }

            Spacer(minLength: 0)

            Button(action: {
                self.index = 2
            }) {
                Image(ImageText.iconAdd.image)
            }

            Spacer(minLength: 0)

            Button(action: {
                self.index = 3
            }) {
                Image(ImageText.iconSearch.image).foregroundColor(Color.red)
            }

            Spacer(minLength: 0)

            Button(action: {
                self.index = 4
            }) {
                Image(ImageText.iconHamburger.image)
            }

        }.padding(.horizontal, 26).frame(height: 56)
    }
}

如果设备有缺口,如何将自定义 TabBar 设置为更高的高度? SwiftUI 有什么在这里有用的东西吗?

最佳答案

您可以使用 GeometryReader 元素访问安全区域插入,并使用 .safeAreaInsets.bottom 将其添加为填充(请注意,Xcode 自动补全几乎从不处理 GeometryProxy 属性):

var body: some View {
    GeometryReader { proxy in
        VStack {
            // Content goes here
            Spacer()

            // Custom tab bar
            HStack {
                Spacer()
                Button(action: {}) {
                    Image(systemName: "house.fill")
                    .padding()
                }
                Spacer()
                Button(action: {}) {
                    Image(systemName: "house.fill")
                    .padding()
                }
                Spacer()
                Button(action: {}) {
                    Image(systemName: "house.fill")
                    .padding()
                }
                Spacer()
                Button(action: {}) {
                    Image(systemName: "house.fill")
                    .padding()
                }
                Spacer()
            }
            .padding(.bottom, proxy.safeAreaInsets.bottom)
            .background(Color.red)

        }
    }.edgesIgnoringSafeArea(.bottom)
}

关于SwiftUI - 基于设备的自定义 TabBar 高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62558593/

相关文章:

ios - 以编程方式设置按钮的宽度和高度

Ios:应用内购买对话框未出现

ios - 如何在 SwiftUI 中禁用 iOS 可达性滑动手势

ios - Tabbar 不显示在 ios 应用程序中

macos - 在 OSX 中设置多行标签的高度

objective-c - OS X 的 UIGraphicsGetCurrentContext() 等价物是什么?

swift - 在 SwiftUI 中的 Scrollview(列表的替代方案)中使用 VStack 时的性能

fonts - SwiftUI 字体如何使用 uppercased() 和 LocalizedStringKey

ios - TextField 的 Pickerview

iphone - 带有导航 Controller 的选项卡栏应用程序