Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift ios无法使动画无限_Ios_Swift_Animation - Fatal编程技术网

Swift ios无法使动画无限

Swift ios无法使动画无限,ios,swift,animation,Ios,Swift,Animation,我有一个我想要无限的动画 var rotateRock: Bool = true func rotateRock() { UIView.animate(withDuration: 2.7, delay: 2.7, options: [UIViewAnimationOptions.repeat, UIViewAnimationOptions.curveLinear], animations: {

我有一个我想要无限的动画

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 inside ViewDiLoad,这样做,动画永远不会停止,这就是我想要的

如果我现在输入另一个以模式显示的VC,然后退出它,这样我在第一个VC中结束,动画仍在运行,这是我想要的


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

您可以覆盖ViewDidDisplay并在那里调用rotateRock。这应该行得通

编辑:
Matt在下面所说的是正确的,ViewDidDisplay可以工作,但ViewWillDisplay可能会更好,以确保您在开始之前看不到它。

在ViewDidDisplay中执行它?在ViewWillDisplay方法中调用它怎么样?实际上ViewWillDisplay可能会更好。如果我们等到ViewDidDisplay出现,用户将在动画开始前短暂看到停止的动画。我尝试在第一次加载应用程序时同时使用ViewDidDisplay和ViewWillDisplay,但效果良好。但当我切换VC并再次返回以重置动画时,只有一半的动画工作。它会向上移动图像视图,但这一次它不会旋转图像,如果您查看我的代码,则此部分在再次运行动画时不起作用:self.rockImg.transform=cgaffinetTransformRotationAngle:CGFloatM_PI/2I解决了旋转问题,问题是,当动画第二次运行时,它将尝试旋转停止的图像形式,这意味着它不必旋转更多。我用工作代码更新了我的问题