SwiftUI条件视图转换不工作

SwiftUI条件视图转换不工作,swift,animation,swiftui,Swift,Animation,Swiftui,考虑以下代码: class ApplicationHostingView: ObservableObject { @Published var value: Bool } struct ApplicationHostingView: View { // view model env obj var body: some View { Group { if applicationHostingViewModel.value { LoginView(

考虑以下代码:

class ApplicationHostingView: ObservableObject {
  @Published var value: Bool
}

struct ApplicationHostingView: View {
  // view model env obj
  var body: some View {
    Group {
      if applicationHostingViewModel.value {
        LoginView()
          .transition(.move(edge: .leading)) // <<<< Transition for Login View
      } else {
        IntroView()
      }
    }
  }
}

struct IntroView: View {
  // view model env obj
  var body: some View {
    Button(action: { applicationHostingViewModel.value = true }) {
      Text("Continue")
    }
  }
}

struct LoginView: View {
  var body: some View {
    Text("Hello World")
  }
}
问题 在本例中,我看到我从IntroView到LoginView的转换工作正常,除了任何动画。基于条件的IntroView内的动画似乎工作正常,但改变整个屏幕的过渡似乎不起作用

将组更改为ZStack

在某处添加动画

            class ApplicationHostingViewModel: ObservableObject {
                  @Published var value: Bool = false
                }

                struct ApplicationHostingView: View {
                  // view model env obj
                    @ObservedObject var applicationHostingViewModel : ApplicationHostingViewModel
                  var body: some View {
                    ZStack {

                      if applicationHostingViewModel.value {
                        LoginView()
                          .transition(.move(edge: .leading))
                      } else {
                        IntroView(applicationHostingViewModel:applicationHostingViewModel)
                      }
                    }
                  }
                }

                struct IntroView: View {
                  // view model env obj
                     @ObservedObject var applicationHostingViewModel : ApplicationHostingViewModel
                  var body: some View {
                    Button(action: {
                        withAnimation(.default){
                            self.applicationHostingViewModel.value = true} }) {
                      Text("Continue")
                    }
                  }
                }

                struct LoginView: View {
                  var body: some View {
                    Text("Hello World").frame(maxWidth: .infinity, maxHeight:  .infinity)
                  }
                }

例如,将组更改为ZStack启用的转换添加到LoginView内部的文本视图中。但是,我已经有了一个转换:`.transition.moveedge:。在LoginView上处于领先状态。为什么这不起作用呢?没有容器来装中转卡。你能举一个例子,说明如何使用容器为整个过程提供转换吗?我想我不确定如何在这里定义转换上下文,以启用能够处理此转换的容器视图。等等,我刚刚尝试了你的示例,这似乎很有效。我以前甚至用ZStack也没有这种行为。我将很快在这里发表评论。