gpt4 book ai didi

ios - SwiftUI:如何在出现的 View 上正确显示隐藏的 UITabBar?

转载 作者:行者123 更新时间:2023-12-01 16:12:35 29 4
gpt4 key购买 nike

我有一个 TabView,其中一个选项卡是 NavigationView。我希望标签栏隐藏在导航目标 View 中。我已经实现了这一点,但 View 仅在第一次旋转后才能正确显示。如何让它第一次正确显示(第二张图片)?

struct ContentView: View {
var rowIndexes : [Int] = [0,1,2,3,4,5,6]
var body: some View {
TabView {

NavigationView {
List {
ForEach(self.rowIndexes, id: \.self) {i in
NavigationLink(
destination: Color(.blue)
.onAppear(perform: {
Global.tabBar!.isHidden = true
})
.onDisappear(perform: {
Global.tabBar!.isHidden = false
})
) {
Text("\(i)")
}
}
}
}.tabItem {
Image(systemName: "list.number")
Text("List View")
}

NavigationView {
Text("Options View")
}.tabItem {
Image(systemName: "wrench")
Text("Options")
}
}
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
struct Global {
static var tabBar : UITabBar?
}
extension UITabBar {
override open func didMoveToSuperview() {
super.didMoveToSuperview()
Global.tabBar = self
print("Tab Bar moved to superview")
}
}

这是第一次单击列表中的链接后屏幕的外观(不正确,如果标签栏未隐藏,则底部有间隙):

enter image description here

这是将屏幕旋转到横向,然后又回到纵向后的样子(正确,蓝色 View 一直延伸到底部):

enter image description here

有没有办法强制重绘,或模拟旋转和返回?我尝试了各种@State、@EnvironmentObect 和@ObservedObject 解决方案,但都没有奏效。

最佳答案

添加忽略底部安全区域可根据需要提供行为。

NavigationLink(
destination: Color(.blue).edgesIgnoringSafeArea(.bottom) // << here !!
.onAppear(perform: {
MyGlobal.tabBar!.isHidden = true

使用 Xcode 11.4/iOS 13.4 测试。

关于ios - SwiftUI:如何在出现的 View 上正确显示隐藏的 UITabBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60983185/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com