在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”属性?的主要内容,如果未能解决你的问题,请参考以下文章

react-native 动画库的流类型

第三方动画库使用方法

让动画不再僵硬:Facebook Rebound Android动画库介绍

让动画不再僵硬:Facebook Rebound Android动画库介绍

41 Vue使用第三方动画库

Android动画使用开源动画库nineoldandroids