在应用程序重新进入时恢复UIView动画?

时间:2012-08-25 05:25:55

标签: ios animation uiview uiimageview resume

我的应用程序的主视图控制器中有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的位置,这就是为什么我真的很困惑为什么会发生这种情况。

编辑:我也试过以编程方式创建我的图像,没有运气同样的问题。暂停和恢复工作成功,如果我通过我的应用程序中的按钮运行它,它似乎问题是应用程序委托方法或其他东西。

如果有人发现错误,请告诉我!

1 个答案:

答案 0 :(得分:2)

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

编辑 :刚尝试了CCDirector的暂停功能,它运行正常。绝对走这条路!!!“