我的应用程序的主视图控制器中有2个UIImageView。它们总是通过UIView动画制作动画。我想要实现的是当用户点击主页按钮,暂停UIView动画,以及当用户返回应用程序时,恢复动画。
所以暂停我从我的app委托调用一个方法到我的ViewController来暂停applicationWillResignActive调用。
为了恢复,我还调用了一个方法,从app委托到我的ViewController,以便在applicationDidBecomeActive方法中恢复。
这是我用来暂停或恢复动画的代码:
-(void)pauseLayer:(CALayer*)layer {
CFTimeInterval paused_time = [layer convertTime:CACurrentMediaTime() fromLayer:nil];
layer.speed = 0.0;
layer.timeOffset = paused_time;
}
-(void)resumeLayer:(CALayer*)layer {
CFTimeInterval paused_time = [layer timeOffset];
layer.speed = 1.0f;
layer.timeOffset = 0.0f;
layer.beginTime = 0.0f;
CFTimeInterval time_since_pause = [layer convertTime:CACurrentMediaTime() fromLayer:nil] - paused_time;
layer.beginTime = time_since_pause;
}
- (void)pause:(BOOL)theBool {
if (theBool) {
[self pauseLayer:self.myImageView.layer];
[self pauseLayer:self.myImageViewleft.layer];
} else {
[self resumeLayer:self.myImageView.layer];
[self resumeLayer:self.myImageViewleft.layer];
}
}
所以我NSLogged所有东西和方法被相应地调用,但是当我去恢复动画时,图像视图不会从它们停止的位置恢复,并且很可能在我将它们放置在XIB中的位置(关闭屏幕)。
所以,当我重新进入我的应用程序时,我的XIB会重新加载吗?绝对没有什么可以改变那些UIImageView的位置,这就是为什么我真的很困惑为什么会发生这种情况。
编辑:我也试过以编程方式创建我的图像,没有运气同样的问题。暂停和恢复工作成功,如果我通过我的应用程序中的按钮运行它,它似乎问题是应用程序委托方法或其他东西。
如果有人发现错误,请告诉我!
答案 0 :(得分:2)
我发现这非常复杂和棘手,所以现在我只使用Cocos2D并使用CCDirector的暂停功能。
编辑 :刚尝试了CCDirector的暂停功能,它运行正常。绝对走这条路!!!“