我使用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")
}
但我希望这个动画循环直到另一个函数被调用。如何让它无限循环,如何在调用另一个函数时使其停止?
答案 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