SwiftUI Slider动画时长修改无效问题求助
SwiftUI Slider动画瞬间完成的修复方案
你的代码里,withAnimation虽然包裹了状态修改,但Slider并没有绑定对应的动画响应逻辑,所以值变化时会直接跳变,不会执行预期的时长动画。
只需给Slider添加动画修饰符,让它跟随sliderValue的变化应用动画即可:
struct SliderTest: View { @State private var sliderValue = 0.0 let maxValue = 30.0 var body: some View { VStack(spacing: 10) { Slider(value: $sliderValue, in: 0...maxValue) // 关联sliderValue的变化与线性动画,确保状态更新时触发平滑过渡 .animation(.linear, value: sliderValue) Button("Animate Slider") { let animationDuration = maxValue - sliderValue withAnimation(.linear(duration: animationDuration)) { sliderValue = maxValue } } Button("Reset to Random") { sliderValue = Double.random(in: 0..<maxValue) } Button("Reset") { sliderValue = 0 } } } }
针对你原本的音频进度条需求:每秒将进度值增加1,同时用withAnimation(.linear(duration: 1))包裹这个更新操作,再配合Slider的动画修饰符,就能实现每秒平滑移动1单位长度的进度动画。
内容的提问来源于stack exchange,提问作者OgreSwamp
相关产品推荐
相关产品推荐

