如何解决在SwiftUI中动态更改动画的持续时间
我正在尝试更改动画的持续时间。我有两个属性-isAnimating
和duration
,它们确定动画是否应该运行。有一个正在制作动画的视图,一个用于切换isAnimating
的按钮和一个绑定到持续时间状态的Slider。当播放动画并且我使用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)
}
}
}
我也尝试了不同的方法,但是总是存在一些问题(例如动画视图闪烁)。
解决方法
如果在动画中添加.repeatForever()修饰符,则该动画将按照其名称所含的含义永久运行(具有给定的参数)。唯一的可能性是停止动画并“重新运行”具有更改的“持续时间”值的新动画。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。