Swift ios无法让动画变得无限

时间:2017-03-09 15:47:53

标签: ios swift animation

我有一个想要无限的动画

var rotateRock: Bool = true
    func rotateRock() {
            UIView.animate(withDuration: 2.7, delay: 2.7, options: [UIViewAnimationOptions.repeat, UIViewAnimationOptions.curveLinear], animations:
                {
                    self.rockImg.transform.ty += 155
                    if self.rotateRock {
                    self.rotateRock = false
                    self.rockImg.transform = CGAffineTransform(rotationAngle: (180.0 * CGFloat(M_PI)) / 180.0)
                } else {
                    self.rotateRock = true
                    self.rockImg.transform = CGAffineTransform(rotationAngle: 0)
                }

            },completion: nil)
        }

然后我在rotateRock()内调用viewDidLoad()这个有效,动画永远不会停止,这就是我想要的。

如果我现在输入另一个以模态方式呈现的VC然后退出它,那么我最终在我的第一个VC中动画仍在运行我想要的。

但如果我通过单击标签栏中的另一个标签来更改VC,然后返回动画已停止。有没有办法检查动画是否已停止,以便我可以重新启动它?

1 个答案:

答案 0 :(得分:1)

您可以覆盖viewDidAppear()并在那里调用rotateRock。这应该有用。

编辑: Matt在下面说的是真的,viewDidAppear会起作用,但也许更好的viewWillAppear确保你在开始之前没有看到它。