-1

我已经在列表中设置了一个只有一个滑块和一个按钮的基本视图,出于某种原因,持续时间为 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 动画是如何工作的,非常感谢任何帮助。

4

1 回答 1

1

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

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

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

在此处输入图像描述

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

于 2021-12-16T23:49:27.353 回答