gpt4 book ai didi

ios - SwiftUI 在 View 之间转换,没有转换

转载 作者:行者123 更新时间:2023-12-05 04:25:28 24 4
gpt4 key购买 nike

我想在 gameView 和 menuView 之间进行转换,但无论我做什么,无论是在模拟器中还是在我的 iPhone 上,我都看不到 View 之间的转换。

这就是我在 View 之间设置条件的地方,也是我提到转换的地方。

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)
}
}
}
}

这是切换 View 的按钮,带有“withAnimation”

    
@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 !!
}

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

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

关于ios - SwiftUI 在 View 之间转换,没有转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73249192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com