变换动画无法重复使用

时间:2017-10-27 14:29:35

标签: ios swift animation cgaffinetransform

我有一个圆圈视图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()来重新启动动画。

我的问题:动画无效,变形立即应用。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

通过调用buttonView.layer.removeAllAnimations(),它不会停止递归循环,因为仍将调用完成处理程序。

而不是创建这个递归循环,你应该考虑使用CATransition,因为它可以让你对UI动画进行更有限的控制。