You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI中简单过渡动画无法生效问题求助

SwiftUI过渡动画不生效的解决方法

你的代码里过渡动画没生效,核心问题有两个:

  • 过渡仅绑定在蓝色视图上,但切换时红色视图没有设置过渡效果,且SwiftUI没有识别到视图切换的容器上下文
  • 条件分支直接返回不同视图,没有给过渡动画提供统一的层级容器

修改后的代码如下:

struct TestApp: App {
    @State private var isReady: Bool = false
    
    var body: some Scene {
        WindowGroup {
            ZStack {
                if isReady {
                    Color.red
                        .transition(.opacity)
                } else {
                    Color.blue
                        .transition(.opacity)
                }
            }
            .onAppear {
                DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
                    withAnimation {
                        isReady = true
                    }
                }
            }
        }
    }
}

关键修改点:

  • 用ZStack包裹两个条件视图,让它们处于同一层级容器中,SwiftUI就能正确处理视图的添加/移除动画
  • 给红色视图也添加.transition(.opacity),这样切换时蓝色视图淡出、红色视图淡入,形成完整的淡入淡出效果
  • 将onAppear移到ZStack上,避免因视图切换导致的回调失效(原代码中虽不影响初始状态,但更规范)

内容的提问来源于stack exchange,提问作者bobby123uk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:06:32