2012-02-29 2 views
0

У меня есть зацикленной анимации в UIViewController, который вызывается в функции viewDidAppear:Xcode/IPad animateWithDuration фона/переднего плана

[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

Вы можете поместить его в его собственном методе и вызвать этот метод из 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.

+0

Это опрятное решение. Благодарю. Мне все равно хотелось бы получить представление о том, почему анимация прекращается (я предполагаю, что это не так), поскольку у меня возникают другие проблемы при размещении приложения в фоновом режиме/переднем плане. –

+0

Вы пробовали его в viewDidLoad? Я использую подобный код, подобный этому, и он отлично работал в viewDidLoad, даже когда приложение неактивно, а затем обратно. – jhilgert00

+0

Да, это не устраняет проблему. Как я уже упоминал выше, у меня возникают другие проблемы, поэтому я задаюсь вопросом, не ошиблись ли я случайно что-то неправильно. –

Смежные вопросы