2010-10-04 6 views
4

Je suis confronté à un problème où un redémarrage de mon application iPhone entraîne l'arrêt des animations. Plus précisément, je l'ensemble d'animation suivante et le fonctionnement:CABasicAnimation s'arrête lors de la relance de l'application

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"]; 
animation.duration = 1.0; 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
animation.repeatCount = 1e100f; // Infinite 
animation.autoreverses = YES; 
animation.fromValue = animationStartPath; 
animation.toValue = animationFinishPath; 
[view.layer addAnimation:animation forKey:@"animatePath"]; 

Lorsque j'appuie sur la touche d'accueil (iOS 4 il est toujours « en cours d'exécution » en arrière-plan), puis relancer le programme, l'animation est arrêté. Est-il possible d'empêcher cela ou de les redémarrer facilement?

Répondre

1

Il existe deux méthodes dans votre délégué d'application dans lesquelles vous pouvez transmettre des informations à votre contrôleur de vue qui exécute l'animation.

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    // Make note of whether or not the animation is running. 
    // Using NSUserDefaults is probably the simplest 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    // Check your user default setting to see if the animation 
    // was running when the app resigned active and then restart it 
} 

Bien sûr, cela signifie que vous aurez besoin d'une référence à votre contrôleur de vue qui exécute l'animation dans votre application délégué, ou vous pouvez utiliser les notifications pour passer la notification ainsi. Quoi qu'il en soit, la ligne de fond est que vous devrez regarder pour que l'application redevienne active et redémarre l'animation.

+0

Merci. Cela a fonctionné, mais à la fin, nous avons simplement mis UIApplicationExitsOnSuspend à true, car l'utilisateur aurait besoin de resynchroniser avec le serveur lors de la reprise de toute façon. – Chase

+0

Oui. Je trouve de plus en plus que la sortie est souvent une meilleure solution. –

+0

Comment conservez-vous une référence au contrôleur de vue actuel? –