Question

J'ai une animation que j'affiche à l'aide d'un UIImageView:

imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];

Je sais que je peux l'arrêter avec stopAnimating, mais ce que je veux, c'est pouvoir le suspendre. La raison en est que, lorsque vous appelez stop, aucune de vos images d'animation n'est affichée, alors que j'aimerais que la dernière image soit affichée au moment où je clique sur un bouton pour rester actif.

J'ai essayé de définir une durée beaucoup plus longue, mais toutes les images disparaissent également. Il doit y avoir un moyen très basique de le faire?

Était-ce utile?

La solution 2

Hmmm ... puisque personne ne semble savoir, je suppose que ce n'est pas possible.

Je suis allé de l'avant et j'ai écrit mon propre UIView , avec une sous-vue UIImageView , qui utilise un NSTimer pour basculer entre les images. L'avantage de cela est que je peux faire une pause et reprendre le chronomètre à ma guise, et que les performances ne semblent pas être un problème.

Autres conseils

Ce code mettra en pause un objet animé à sa position actuelle dans le processus d'animation. Si vous enregistrez d'autres variables telles que l'heure ou la progression ou tout ce dont vous avez besoin, il devrait être relativement simple de reprendre l'animation à nouveau.

UIView *viewBeingAnimated = //your view that is being animated
viewBeingAnimated.frame = [[viewBeingAnimated.layer presentationLayer] frame];
[viewBeingAnimated.layer removeAllAnimations];
//when user unpauses, create new animation from current position.

@oddmeter juste un petit montage:

    animatedView.animationImages = images; //images is your array
    [animatedView startAnimating];


    //Then when you need to pause;

[animatedView stopAnimating]; //Important!!
    animatedView.image = [images objectAtIndex: 0];

Cela devrait faire l'affaire: https://developer.apple .com / bibliothèque / ios / # qa / qa2009 / qa1673.html

Il vous indique en gros ce que vous devez faire pour suspendre / reprendre une animation basée sur CALayer .

Si vous ne souhaitez pas utiliser les méthodes CALayer pour l'animation contrôlée par UIImageView , vous pouvez toujours créer vous-même l'animation basée sur le tableau UIImage . Le code requis est très court, vous pouvez le prendre ici: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html

Une autre option consiste à définir la propriété image ainsi que la propriété animationImages . Cela affichera l'image statique lorsque les animations de UIImageView seront arrêtées.

En supposant que votre classe est une sous-classe de UIImageView et que vous avez un NSMutableArray d'images, procédez comme suit:

self.animationImages = images;
//yes, I'm skipping the step to check and make sure you have at least one
//element in your array
self.image = [images objectAtIndex: 0];

Peut-être pouvez-vous prendre une capture d'écran de la dernière image animée et l'afficher?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top