【问题标题】:Is there a way to dismiss a modal view without animation in SwiftUI?有没有办法在 SwiftUI 中关闭没有动画的模态视图?
【发布时间】:2020-09-27 19:37:41
【问题描述】:

有没有办法在 SwiftUI 中关闭没有动画的模态视图?

我想在没有关闭动画的情况下关闭模式,因为我想使用视图路由器从模式视图导航到新的 SwiftUI 视图。一切正常,除了从模态视图到新全屏视图的过渡动画。我按照该教程创建了一个视图路由器:Tutorial

我正在使用该代码 sn-p 来呈现模态视图:

struct ContentView: View {

  @State private var showModal = false
  @Environment(\.presentationMode) var presentationMode


  var body: some View {
    Button(action: {
        self.showModal = true
    }) {
        Text("Show modal")
    }.sheet(isPresented: self.$showModal) {
        ModalView()
    }
  }
}


struct ModalView: View {

  @EnvironmentObject var viewRouter: ViewRouter

  var body: some View {
    Group {
      Text("Modal view")
      Button(action: {
         self.viewRouter.currentPage = "New View"
      }) {
        Text("Dismiss")
      }
    }
  }
}

来源:Answer by @M Reza Farahani

这是 Swift 中的一个解决方案:Swift solution

【问题讨论】:

    标签: ios swift modal-dialog swiftui


    【解决方案1】:

    因为我没有 ViewRouter,所以没有完全测试这个

    你应该移动

    @Environment(\.presentationMode) var presentationMode
    

    ModalView 并添加

    self.presentationMode.wrappedValue.dismiss()
    

    到那个 ModalView 中的按钮操作

    编辑:

    我添加后

    .animation(.none)
    

    到它为我工作的 ModalView

    好吧,那是一条丑陋的**评论,所以把它放在这里:

        struct ModalView: View {
    
    //  @EnvironmentObject var viewRouter: ViewRouter
        @Environment(\.presentationMode) var presentationMode
    
      var body: some View {
        Group {
          Text("Modal view")
          Button(action: {
    //         self.viewRouter.currentPage = "New View"
            self.presentationMode.wrappedValue.dismiss()
    
          }) {
            Text("Dismiss")
          }
        }
        .animation(.none)
      }
    }
    

    【讨论】:

    • 感谢您的回复。但是我仍然有那个过渡动画。这不能解决我的动画问题。
    • 当我将 .animation(.none) 添加到 ModalView 时,它不再有动画。希望这能给您带来想要的效果。
    • @Great Otten 你在哪里添加 ``` .animation(.none) ```修饰符?我不确定如何解决这个问题。
    • 啊,这很奇怪。我在模拟器上对其进行了测试,我认为它给出了你想要的结果,但是当我在我的真实设备上构建它时,它仍然是动画的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    • 2019-11-29
    • 1970-01-01
    • 2011-06-27
    • 2019-03-08
    相关资源
    最近更新 更多