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
,它似乎只能使用两种模式:值的立即更改和内部预定义的动画(您会注意到,如果删除动画)。
我在列表中设置了一个只有一个滑块和一个按钮的基本视图,由于某种原因,持续时间为 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
,它似乎只能使用两种模式:值的立即更改和内部预定义的动画(您会注意到,如果删除动画)。