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

SwiftUI计时器淡入正常但无法淡出问题求助

SwiftUI计时器淡入淡出效果修复方案

你的代码中使用的.transition修饰符仅适用于视图被添加到/从视图树中移除时的动画,而你只是在更新文本内容,视图本身始终存在,因此淡出逻辑无法触发。下面是修复后的实现方案:

修改后的代码

VStack (alignment: .leading) {
    Text("TIME REMAINING")
        .font(
            .system(size: 13)
                .uppercaseSmallCaps()
        )
        .foregroundColor(Color(.lightGray))

    Text(whichButtonWasPressed.countDownTimerTransition)
        .font(
            .system(size: 13)
                .uppercaseSmallCaps()
        )
        .foregroundColor(Color(.lightGray))
}
.position(x: globalCenterX, y: globalCenterY)
.opacity(endTransition ? 0 : 1)
.animation(endTransition ? .easeIn(duration: 0.5) : .easeOut(duration: 0.5), value: endTransition)

关键说明

  • 用opacity直接控制视图透明度:endTransition为true时设为0(淡出),否则设为1(正常显示/淡入)
  • 将动画绑定到endTransition状态:当该布尔值变化时,自动触发对应动画逻辑——启动计时器时用.easeOut实现淡入,计时到00:00时用.easeIn实现淡出
  • 可调整duration参数控制动画速度,适配你的交互需求
  • 确保endTransition是用@State或@Published标记的可绑定状态变量,状态变化时才能触发视图更新和动画

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:45:42