我有一个圆圈视图buttonView
,我在这样的UIView动画中应用CGAffineTransform
:
func animateButton() {
UIView.animate(withDuration: 3, delay: 0.0, options: [.curveEaseInOut, .allowUserInteraction], animations: {() -> Void in
self.buttonView.transform = CGAffineTransform(scaleX: 1, y: 1)
}, completion: {(_ finished: Bool) -> Void in
UIView.animate(withDuration: 3, delay: 3.0, options: [.curveEaseInOut, .allowUserInteraction], animations: {() -> Void in
self.buttonView.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
}, completion: {(_ finished: Bool) -> Void in
if canAnimateButton {
animateButton()
}
})
}
这个动画在一个被称为自身(递归)的函数中,以创建一个无限循环。
然后我停止触摸视图的动画:
buttonView.layer.removeAllAnimations()
当按钮动作结束时,我想通过调用相同的函数animateButton()
来重新启动动画。
我的问题:动画无效,变形立即应用。
提前感谢您的帮助。
答案 0 :(得分:0)
通过调用buttonView.layer.removeAllAnimations(),它不会停止递归循环,因为仍将调用完成处理程序。
而不是创建这个递归循环,你应该考虑使用CATransition,因为它可以让你对UI动画进行更有限的控制。