BLACK FRIDAY SALE: Save big on all my Swift books and bundles! >>

Changing duration for Slider animation doesn't make any difference

Forums > SwiftUI

(xposted from SO)

I'm trying to animate Slider smoothly. My original problem was animating it for 1 second every second for a small value (building an audio player scrubber), but the animation was a split second instead of a full second.

To isolate a problem, I built a playground where I'm trying to animate Slider change from 0 to maxValue for maxValue number of seconds. However, whatever maxValue is, the animation happens in a fraction of a second.

Here is the code:

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)
            Button("Animate Slider") {
                withAnimation(.linear(duration: maxValue-sliderValue)) {
                    sliderValue = maxValue
                }
            }
            Button("Reset to Random") {
                sliderValue = Double.random(in: 0..<maxValue)
            }
            Button("Reset") {
                sliderValue = 0
            }
        }
    }
}

The code with a preview for Swift Playgrounds.

   

Hacking with Swift is sponsored by RevenueCat

SPONSORED In-app subscriptions are a pain to implement, hard to test, and full of edge cases. RevenueCat makes it straightforward and reliable so you can get back to building your app. Oh, and it's free if your app makes less than $10k/mo.

Learn more

Sponsor Hacking with Swift and reach the world's largest Swift community!

Reply to this topic…

You need to create an account or log in to reply.

All interactions here are governed by our code of conduct.

 
Unknown user

You are not logged in

Log in or create account
 

Link copied to your pasteboard.