ios - 在 Swiftui 中如何通过旋转到横向自动关闭模态

标签 ios swift xcode swiftui

我目前使用基于此代码的景观环境对象 - 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/

相关文章:

ios - 带有 CollectionView/TableView 输入/文本字段的 RxSwift

ios - 在 StoryBoard 上 UILabel 上的奇怪行为\n

ios - 使用外部源的 subview 中的视频播放器不缩放

ios - NSPredicate 检查以逗号分隔的一串数字是否包含数字

ios - NSInvalidArgumentException',原因: 'Unable to parse the format string "userName like %@ password like % @"'

swift - 如何在 Swift 中过滤字符串数组以获得唯一结果

objective-c - 在表格 View 中制作淡入淡出的标题,就像在笔记应用程序中一样

ios - 如何检测用户是否单击了不允许访问相机

ios - Xcode - 工具栏或 View 未显示在顶部附近

iphone - 每次滚动时异步图像都会改变?