我想弄清楚为什么旋转设备会使内容消失。
这是我正在运行的确切代码:
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])
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何解决此问题,以便旋转设备以保持内容可见?
在“Liem Vo”回答后提供更多反馈。
如果我在 iPhone 11 Pro 上运行代码,而不是在最大值上运行,它就可以工作。
在最大时运行它时,“主视图”在横向屏幕左侧离开屏幕,可以通过在其上滑动来拉入。我不知道在 SwiftUI 中使用 NavigationView 的这种行为,所以这就是我的原因。
问题在于横向模式视图已更改,因此您需要以不同的模式处理视图。
创建一个扩展方法如下
extension View {
func phoneOnlyStackNavigationView() -> some View {
if UIDevice.current.userInterfaceIdiom == .phone {
return AnyView(self.navigationViewStyle(StackNavigationViewStyle()))
} else {
return AnyView(self)
}
}
}
Run Code Online (Sandbox Code Playgroud)
并在您看来使用此方法。
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()
}
}
Run Code Online (Sandbox Code Playgroud)
更多细节可以参考https://www.hackingwithswift.com/books/ios-swiftui/making-navigationview-work-in-landscape
归档时间: |
|
查看次数: |
1392 次 |
最近记录: |