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
相关产品推荐
相关产品推荐

