gpt4 book ai didi

SwiftUI,NavigationView 在旋转时消失?

转载 作者:行者123 更新时间:2023-12-04 02:40:39 27 4
gpt4 key购买 nike

我试图弄清楚为什么旋转设备会使内容消失。

这是我正在运行的确切代码:

struct ContentView: View {
@State private var selection = 0

init() {

}

var body: some View {

NavigationView {

VStack {
Button(action: {

}) {
Text("Tap me")
.padding()
.foregroundColor(.white)
.background(Color.blue)
.cornerRadius(8)
}.shadow(color: Color.blue, radius: 20, y: 5)
.frame(width: 300, height: 100, alignment: .trailing)

Text("SwiftUI")
.navigationBarTitle("Nav Title")
}

Color.red.edgesIgnoringSafeArea([.top,.bottom,.leading,.trailing])

}

}
}

enter image description here

我该如何解决这个问题,以便旋转设备以保持内容可见?

在“Liem Vo”回答后提供更多反馈。

如果我在 iPhone 11 Pro 而不是 max 上运行代码,它就可以工作。
enter image description here

当以最大速度运行时,“主视图”会在横向屏幕左侧离开屏幕,并且可以通过在其上滑动来拉入。我不知道在 SwiftUI 中使用 NavigationView 的这种行为,所以这就是我的原因。

这是 MAX 上的行为,没有“Liem Vo”建议的修复:
enter image description here

最佳答案

问题在于横向模态视图已更改,因此您需要以不同的模式处理 View 。

创建一个扩展方法如下

extension View {
func phoneOnlyStackNavigationView() -> some View {
if UIDevice.current.userInterfaceIdiom == .phone {
return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
} else {
return AnyView(self)
}
}
}

并在您的 View 中使用此方法。
struct ContentView: View {
@State private var selection = 0
var body: some View {

NavigationView {

VStack {
Button(action: {

}) {
Text("Tap me")
.padding()
.foregroundColor(.white)
.background(Color.blue)
.cornerRadius(8)
}.shadow(color: Color.blue, radius: 20, y: 5)
.frame(width: 300, height: 100, alignment: .trailing)

Text("SwiftUI")
.navigationBarTitle("Nav Title")
}

Color.red.edgesIgnoringSafeArea([.top,.bottom,.leading,.trailing])

}
.phoneOnlyStackNavigationView()

}
}

更多细节可以引用 https://www.hackingwithswift.com/books/ios-swiftui/making-navigationview-work-in-landscape

关于SwiftUI,NavigationView 在旋转时消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59618477/

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