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解决了旋转问题,问题是,当动画第二次运行时,它将尝试旋转停止的图像形式,这意味着它不必旋转更多。我用工作代码更新了我的问题