0

我的应用程序的主视图控制器中有 2 个 UIImageView。他们总是通过 UIView 动画制作动画。我想要实现的是当用户单击主页按钮时,暂停 UIView 动画,当用户返回应用程序时,恢复动画。

所以要暂停,我从我的应用程序委托调用一个方法到我的 ViewController 来暂停 applicationWillResignActive 调用。

为了恢复,我还从应用程序委托调用了一个方法到我的 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 的位置,这就是为什么我真的很困惑为什么会发生这种情况。

编辑:我也尝试过以编程方式创建我的图像,没有运气同样的问题。如果我在运行时通过我的应用程序中的按钮进行暂停和恢复,则它可以成功运行,看来问题出在应用程序委托方法或其他东西上。

如果有人看到有什么问题,请告诉我!

4

1 回答 1

2

我发现这非常复杂和棘手,所以现在我将只使用 Cocos2D 并利用 CCDirector 的暂停功能。

编辑:刚刚尝试了 CCDirector 的暂停功能,效果很好。一定要走这条路!!!

于 2012-08-27T23:59:06.273 回答