Возобновление анимации UIView при повторном входе в приложение?

У меня есть 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, поэтому я действительно не понимаю, почему это происходит.

Изменить: я также пытался создавать свои изображения программно, но безуспешно. Приостановка и возобновление работают успешно, если я делаю это с помощью кнопок в своем приложении во время его работы, похоже, проблема связана с методами делегирования приложения или чем-то еще.

Если кто-нибудь увидит, что не так, пожалуйста, дайте мне знать!


person SimplyKiwi    schedule 25.08.2012    source источник
comment
Вы пытались создать свои UIImageViews программно?   -  person KDaker    schedule 25.08.2012
comment
Да тоже не повезло. Та же проблема. Если я просто делаю это с помощью кнопок в своем приложении, все работает нормально, поэтому это как-то связано с методами делегата. Это действительно странно.   -  person SimplyKiwi    schedule 26.08.2012
comment
Вы пытались использовать application:didEnterBackground и willEnterForeground вместо resignActive и beActive?   -  person KDaker    schedule 26.08.2012
comment
Да, только что попробовал, тоже не помогло.   -  person SimplyKiwi    schedule 26.08.2012


Ответы (1)


Я обнаружил, что это действительно сложно и сложно, поэтому сейчас я просто буду использовать Cocos2D вместо этого и использовать функцию паузы CCDirector.

Правка. Только что попробовал функцию паузы в CCDirector, и она отлично работает. Обязательно пойду этим путем!!!

person SimplyKiwi    schedule 27.08.2012