我目前使用基于此代码的景观环境对象 - https://stackoverflow.com/a/58503841/412154
在我看来,我的模态使用@State/@Binding 适本地出现和消失,具体取决于“完成”按钮按下。我的应用程序在旋转到横向时确实显示了不同的 View ,我希望模式在旋转时自动关闭,但无法弄清楚如何根据另一个 @ennvironmentobject 更改 @binding var
这是我的模态视图的简化示例
struct StepsView: View {
@Binding var isPresented:Bool
@EnvironmentObject var orientation:Orientation
var body: some View {
VStack(alignment: .center) {
Text("Step")
}
.navigationBarItems(trailing: Button(action: {
//print("Dismissing steps view...")
self.isPresented = false
}) {
Text("Done").bold()
})
}
谢谢你的帮助!
最佳答案
欣赏@davidev的回答,但我希望每个模态的行为都有点不同,所以我这样做了
struct StepsView: View {
@Binding var isPresented:Bool
@EnvironmentObject var orientation:Orientation
private var PortraitView:some View {
VStack(alignment: .center) {
Text("Modal")
}
.navigationBarItems(trailing: Button(action: {
self.isPresented = false
}) {
Text("Done").bold()
})
}
var body: some View {
buildView(isLandscape: orientation.isLandScape, isShowing: &isPresented)
}
func buildView(isLandscape:Bool, isShowing:inout Bool) -> AnyView {
if !isLandscape {
return AnyView(PortraitView)
} else {
isShowing = false
return AnyView(EmptyView())
}
}
关于ios - 在 Swiftui 中如何通过旋转到横向自动关闭模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62801381/