我想要在Gameview和MenuView之间转换,无论我做什么,我都看不到在模拟器或iPhone中的视图之间的转换.

这就是我在观点之间有条件的地方,也是我提到过渡的地方.

struct gameApp: App {
    @ObservedObject var appState = AppState(isGameActive: false)
    
    var body: some Scene {
        WindowGroup {
            
            if appState.isGameActive == false {
                MenuView()
                    .environmentObject(appState)
                    .transition(.move(edge: .trailing))
                    .animation(.default, value: appState.isGameActive)
            } else {
                GameView(difficulity: 1)
                    .transition(.move(edge: .trailing))
                    .animation(.default, value: appState.isGameActive)
            }
        }
    }
}

这里是切换视图的按钮所在的位置,带有"with Animation"

    
    @EnvironmentObject var appState: AppState
    
    var body: some View {
        
        ZStack {
            VStack {
                Spacer()
                Text("Tic Tac Toe")
                    .font(.title)
                    .fontWeight(.bold)
                    .foregroundColor(.indigo)
                    
                Image("MainLogo")
                    .resizable()
                    .frame(width: 150, height: 150)
                Spacer()
                Button("Start") {
                    withAnimation {
                        appState.isGameActive.toggle()
                    }
                }
                .padding()
                .padding(.horizontal, 16.0)
                .background(.indigo)
                .foregroundColor(Color.white)
                .containerShape(RoundedRectangle(cornerRadius: 16))
            .font(.headline)
                Spacer()
            }
        }
        
        
    }
}

推荐答案

将条件放入可设置动画的容器中,如

WindowGroup {
  ZStack {          // << here
    if appState.isGameActive == false {
        MenuView()
            .environmentObject(appState)
            .transition(.move(edge: .trailing))
    } else {
        GameView(difficulity: 1)
            .transition(.move(edge: .trailing))
    }
  }
  .animation(.default, value: appState.isGameActive) // << here !!
}

*但是,我建议将与视图相关的所有内容分离到根视图中,这样场景看起来就像

WindowGroup {
   ContentView()   // << this !!
}

Ios相关问答推荐

SwiftUI.从自定义视图修改器访问自定义视图子视图

如何创建自定义组件来接受(和传递)所有可能的Textfield参数?

通过在SWIFT中不起作用的泛型传递协议一致性类型

由于代码签名时出错,无法在iOS设备上发布iOS Maui Build

使用异步重载实现Swift协议一致性

如何从单独的视图更改修饰符的值

具有一个参数/参数的泛型类的泛型类

Task.cancel() 的 TaskPriority 的区别

Apollo iOS 客户端代码生成:错误:无法查询字段

卡在 Apple 的 SwiftUI 教程第 5 章(更新应用数据)

iOS 是否支持使用独立 .xib 文件创建的嵌套自定义子视图?

如何让我的 iOS 应用程序与 api 连接?

在 UICollectionView 上动态设置布局导致莫名其妙的 contentOffset 变化

本月使用 iOS 的天数?

光标未显示在 UITextView 中

Swift枚举继承

没有 Mac 的 Xamarin Visual Studio IOS 开发?

iOS SDK - 以编程方式生成 PDF 文件

具有两种不同字体大小的 NSAttributedString 示例?

在两个或多个 iPhone 应用程序之间共享数据