J'ai donc quelques blocs d'animation pour créer des animations très simples sur mon application (par exemple une roue qui tourne continuellement). C'est le code de l'animation (j'ai changé de l'ancien bloc de style commitanimations mais j'ai eu le même problème avec ça).Pourquoi ai-je besoin de faire cela et y at-il un meilleur moyen? Blocs d'animation sur l'application iPhone OS4
[UIView animateWithDuration:30 delay:0.0
options:(UIViewAnimationOptionAllowUserInteraction |
UIViewAnimationOptionCurveLinear
| UIViewAnimationOptionRepeat)
animations:^(void){
wheel.transform = CGAffineTransformMakeRotation(M_PI*-0.5);
}
completion:^(BOOL finished){
if(finished){NSLog(@"^^^^^^^^wheel^^^^FINSIHED");
]}
}];
Le problème est que je le OS4 lorsque l'application a été rejetée à la barre multi-tâches et reprend les arrêts d'animation. Si le CV réinitialiser la position lorsque l'application devient de nouveau actif, comme celui-ci ....
wheel.transform = CGAffineTransformMakeRotation(0);
il continue.
Ce n'est pas idéal car mon animation saute quand elle redémarre. Je ne comprends pas pourquoi cela arrive ou pourquoi je devrais le faire. La méthode "sur fini" est appelée presque immédiatement au démarrage de l'animation, ce qui est étrange car cette animation ne devrait jamais finir. En outre, il n'est pas appelé lorsque l'application devient active et l'animation s'arrête réellement.
Des idées ou des suggestions? J'ai lutté avec cela depuis un certain temps maintenant ...
Merci, je pourrais utiliser une minuterie pour animer les pièces, je n'y avais pas vraiment réfléchi. Cela semble plus compliqué cependant, savez-vous pourquoi ma méthode ci-dessus ne fonctionne pas? – user157733
'NSTimer' ou' CADisplayLink' sont de meilleurs choix pour les animations de longue durée comme celle-ci.Les animations 'UIView' sont censées être de courte durée, généralement à la suite d'une interaction de l'utilisateur. –