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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:19:03