Xcode / iPad animateWithDuration фон / передний план - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть зацикленная анимация в UIViewController, который вызывается в функции viewDidAppear:

[UIView animateWithDuration:8.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
                 animations:^{ 
                     _introImage.center = CGPointMake(INTRO_IMAGE_X_END, INTRO_IMAGE_Y);

                 } 
                 completion:^(BOOL finished){
                     _introImage.center = CGPointMake(INTRO_IMAGE_X_START, INTRO_IMAGE_Y);
                 }];

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

1 Ответ

1 голос
/ 29 февраля 2012

Вы можете поместить его в свой собственный метод и вызвать этот метод из viewDidAppear, а также в applicationDidBecomeActive, который находится в вашем AppDelegate.m

-(void)animate {
[UIView animateWithDuration:8.0 delay:0.0 options:UIViewAnimationOptionRepeat | UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction
                 animations:^{ 
                     _introImage.center = CGPointMake(INTRO_IMAGE_X_END, INTRO_IMAGE_Y);

                 } 
                 completion:^(BOOL finished){
                     _introImage.center = CGPointMake(INTRO_IMAGE_X_START, INTRO_IMAGE_Y);
                 }];

}

Чтобы запустить метод из «viewDidAppear», вызовите метод одной строкой, например:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self animate];
}

И для запуска анимации из делегата приложения, когда приложение становится активным:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [self.viewcontroller animate];
}

Все это предполагает, что вы можете использовать viewDidAppear и для других вещей. Разделение анимации на собственный метод позволяет вам вызывать ее исключительно, вместо того, чтобы запускать все внутри viewDidAppear.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...