gpt4 book ai didi

animation - 简单的过渡动画在 SwiftUI 中不起作用

转载 作者:行者123 更新时间:2023-12-05 03:21:17 24 4
gpt4 key购买 nike

我想了解 SwiftUI 中的过渡动画,但它对我不起作用。在下面的代码中,一秒后的转换是立即的(无淡入淡出)。

struct TestApp: App {

@State private var isReady: Bool = false

var body: some Scene {
WindowGroup {
if isReady {
Color.red
} else {
Color.blue
.transition(.opacity)
.onAppear {
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
withAnimation {
isReady = true
}
}
}
}
}
}
}

最佳答案

过渡和动画是不同的东西,有一个要显示过渡的 View ,还有一个为该过渡设置动画的 View 。此外,应用程序不会更新 View ,状态应该在 View 内。

所以这是一个正确的变体:

struct TestApp: App {
var body: some Scene {
WindowGroup {
ContentView() // root view of the scene !!
}
}
}

struct ContentView: View {
// state of the view refreshes the view
@State private var isReady: Bool = false

var body: some View {
ZStack { // animating container !!
if isReady {
Color.red
// .transition(.opacity) // probably you wanted this as well
} else {
Color.blue
.transition(.opacity) // << transition here !!
}
}
.onAppear { // << responsible for animation !!
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
withAnimation {
isReady = true
}
}
}
}
}

关于animation - 简单的过渡动画在 SwiftUI 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73009850/

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