【发布时间】:2020-08-21 09:29:24
【问题描述】:
我正在尝试在动画时更改动画的持续时间。我有两个属性-isAnimating 确定动画是否应该运行,duration。有一个正在动画的视图,切换isAnimating 的按钮和绑定到持续时间状态的滑块。当动画正在播放并且我使用 Slider 更改值时,持续时间不会改变。有什么方法可以实现我想要的吗?
struct ContentView: View {
@State var isAnimating = false
@State var duration = 2.0
var body: some View {
VStack {
Spacer()
Circle()
.frame(width: 50.0, height: 50.0)
.scaleEffect(isAnimating ? 2.0 : 1.0)
.animation(
isAnimating ?
Animation.easeOut(duration: duration).repeatForever(autoreverses: false) :
.default
)
Spacer()
Button(
action: { self.isAnimating.toggle() },
label: { Text("Tap") }
)
Spacer()
Slider(value: $duration, in: (0.1 ... 5.0))
.padding([.horizontal], 20.0)
.padding([.bottom], 50.0)
}
}
}
我也尝试了不同的方法,但总是有一些问题(例如动画视图闪烁)。
【问题讨论】:
标签: ios swift animation swiftui watchos