在iOS“Spring”动画库中,每次调用“animate()”方法之前是不是需要设置“animation”属性?
Posted
技术标签:
【中文标题】在iOS“Spring”动画库中,每次调用“animate()”方法之前是不是需要设置“animation”属性?【英文标题】:In iOS "Spring" library for animation, Do we need to set "animation" property each time before calling "animate()" method?在iOS“Spring”动画库中,每次调用“animate()”方法之前是否需要设置“animation”属性? 【发布时间】:2017-03-21 13:14:04 【问题描述】:我在我的应用中使用Spring library 来制作动画效果。
在我的情况下,我必须为动作按钮设置动画,所以我添加了以下代码块。
override func viewDidLoad()
super.viewDidLoad()
setOptions()
func setOptions()
testButton.animation = Spring.AnimationPreset.Shake.rawValue
testButton.curve = Spring.AnimationCurve.EaseIn.rawValue
@IBAction func testButtonPressed(_ sender: Any)
animateView()
在上面的代码流中,动画动作只发生一次。
但是如果我更新“testButtonPressed”方法如下,
@IBAction func testButtonPressed(_ sender: Any)
setOptions()
animateView()
每次按下 testButton 时都会出现动画。
为什么我每次都必须更新动画属性?只更新一次属性还不够吗?
【问题讨论】:
【参考方案1】:在库中,resetAll 似乎删除了动画类型和动画执行后的所有属性。在 Spring 文件中的动画块完成时调用该方法。
这里是一个指向相关Spring 文件的链接以及删除动画的函数的副本。
func resetAll()
x = 0
y = 0
animation = ""
opacity = 1
scaleX = 1
scaleY = 1
rotate = 0
damping = 0.7
velocity = 0.7
repeatCount = 1
delay = 0
duration = 0.7
希望这有助于您了解为什么在您重置动画类型之前动画会被移除。
【讨论】:
以上是关于在iOS“Spring”动画库中,每次调用“animate()”方法之前是不是需要设置“animation”属性?的主要内容,如果未能解决你的问题,请参考以下文章
让动画不再僵硬:Facebook Rebound Android动画库介绍