SwiftUI 动画表现怪异,或者我不知道如何使用它们

SwiftUI Animations acting weird, or I don't know how to use them

我在列表中设置了一个只有一个滑块和一个按钮的基本视图,由于某种原因,持续时间为 10 秒的动画几乎立即发生,事实上,无论我做什么放在 withAnimation 里面,动画看起来总是一样的。

代码:

import SwiftUI

struct TestView: View {
    @State private var value = 5.0
    
    var body: some View {
        List {
            Slider(
                value: $value,
                in: 0...10
            ) {
            } minimumValueLabel: {
                Text("0")
            } maximumValueLabel: {
                Text("10")
            }
            Button("Button") {
                withAnimation(.easeInOut(duration: 10)) {
                    value += 3
                }
            }
        }
    }
}

struct TestView_Previews: PreviewProvider {
    static var previews: some View {
        TestView()
    }
}

隐式动画似乎也不起作用,但我想我只是不知道 Swift 动画是如何工作的,非常感谢任何帮助。

动画值更改的实现是正确的。

您可以通过插入自定义视图来验证这一点(我将我的视图放在滑块和按钮之间并使用了 spring 动画)。像这样:

Color.blue
    .frame(width: value * 10, height: 20)

这意味着“问题”出在 SwiftUI 的 Slider,它似乎只能使用两种模式:值的立即更改和内部预定义的动画(您会注意到,如果删除动画)。