Ios 停止后重新启动旋转动画

Ios 停止后重新启动旋转动画,ios,objective-c,animation,uiimageview,Ios,Objective C,Animation,Uiimageview,在经历了很多改变/尝试了很多事情之后,我已经到了一个真正被卡住的阶段 我有一个旋转的UIImageview,它可以无限旋转,直到屏幕按下为止。。。此时,如果旋转值与某个值匹配(落在游戏中的目标上),目标移动,游戏继续。。。如果你在按下屏幕后过度射击目标,游戏结束。简单的游戏 我的问题是,在您结束游戏并且动画停止后,屏幕上会出现一个ui按钮,它会使用模块将您带回相同的视图控制器。(我已经为许多应用程序这么做了,效果很好) 除此之外,这一次,假设你得了4分(命中4个目标),然后错过了第5场比赛及其结

在经历了很多改变/尝试了很多事情之后,我已经到了一个真正被卡住的阶段

我有一个旋转的
UIImageview
,它可以无限旋转,直到屏幕按下为止。。。此时,如果旋转值与某个值匹配(落在游戏中的目标上),目标移动,游戏继续。。。如果你在按下屏幕后过度射击目标,游戏结束。简单的游戏

我的问题是,在您结束游戏并且动画停止后,屏幕上会出现一个
ui按钮
,它会使用
模块
将您带回相同的
视图控制器
。(我已经为许多应用程序这么做了,效果很好)

除此之外,这一次,假设你得了4分(命中4个目标),然后错过了第5场比赛及其结束,当你按下按钮重新启动初始ViewController(基本上是重新加载ViewDidLoad)时,动画将不会开始。。。即使分数和其他东西重置正确

这是我如何实现动画的:

- (void) spinWithOptions: (UIViewAnimationOptions) options {
    [UIView animateWithDuration: 0.0f
                          delay: 0.0f
                        options: options
                     animations: ^{
                         Hand.transform = CGAffineTransformRotate(Hand.transform, M_PI / 30);
                     }
                     completion: ^(BOOL finished) {
                         if (finished) {
                             if (animating) { //if, keep spinning
                                 [self spinWithOptions: UIViewAnimationOptionCurveLinear];
                             } else if (options != UIViewAnimationOptionCurveEaseOut) { //final spin
                                 //[self spinWithOptions: UIViewAnimationOptionCurveEaseOut dir:direction];
                             }
                         }
                     }];
}

- (void) startSpin {
    [Hand.layer removeAllAnimations];
    if (!animating) {
        animating = YES;
        [self spinWithOptions: UIViewAnimationOptionCurveEaseIn];
    }
}

- (void) stopSpin {
    animating = NO;
    inGame = NO;
}
我在不同的地方尝试了
removeAllAnimations
,我想可能是。。。但是我不明白为什么,如果调用ViewDidLoad/ViewController重置,并且您回到了开始,为什么动画不会重新启动


我之所以选择这种旋转方法,是因为我可以跟踪旋转值并存储它,这样我就可以重新启动动画,或者我想……

我不知道如何调用
spinWithOptions
。此外,在故障点设置动画是或否?您需要对单步执行和断点进行一些调试,并找出发生了什么情况。
spinWithOptions
-(void)startSpin
中调用,它在
ViewDidLoad
中调用……您确定多次调用ViewDidLoad吗?也许你应该在视图中打电话给startSpin这是因为你的视图从未发布过吗?您在完成块中强烈地捕获了
self
,这可能导致一个保留周期。如果是这样,第二个
viewdiload
将在视图的新实例上调用,而不是您期望的实例。如何释放视图?