编程动画在Swift中永远循环

时间:2015-06-28 17:56:21

标签: ios swift core-animation

我使用Stack Overflow帖子中的代码snippit:How to make "shaking" animation

我将此代码粘贴到我的项目中并且完美运行:

func shakeView(){
    var shake:CABasicAnimation = CABasicAnimation(keyPath: "position")
    shake.duration = 0.1
    shake.repeatCount = 2
    shake.autoreverses = true

    var from_point:CGPoint = CGPointMake(LoginField.center.x - 5, LoginField.center.y)
    var from_value:NSValue = NSValue(CGPoint: from_point)

    var to_point:CGPoint = CGPointMake(LoginField.center.x + 5, LoginField.center.y)
    var to_value:NSValue = NSValue(CGPoint: to_point)

    shake.fromValue = from_value
    shake.toValue = to_value
    LoginField.layer.addAnimation(shake, forKey: "position")
}

但我希望这个动画循环直到另一个函数被调用。如何让它无限循环,如何在调用另一个函数时使其停止?

2 个答案:

答案 0 :(得分:2)

首先,将repeatCount设置为HUGE_VALF

  

将此属性设置为HUGE_VALF将导致动画永远重复。

其次,当您想要停止动画时,请致电LoginField.layer.removeAllAnimations()LoginField.layer.removeAnimationForKey("position")

修改:显然Swift不知道HUGE_VALF,将repeatCount设置为Float.infinity应该有效。

答案 1 :(得分:0)

使用shake.repeatCount = Float.infinity