Wie eine UIImageView-Animation pausieren
-
05-07-2019 - |
Frage
Ich habe eine Animation, die ich bin mit einem UIImageView Anzeige:
imageView.animationImages = myImages;
imageView.animationDuration = 3;
[imageView startAnimating];
Ich weiß, dass ich es stopAnimating mehr verwenden kann, aber was ich will in der Lage sein, es zu unterbrechen. Der Grund dafür ist, dass, wenn Sie Stopp rufen, keine Ihrer Animationsbilder angezeigt werden, während ich die letzten möchte, die zum Zeitpunkt ist, wenn ich einen Knopf drücken zu bleiben.
Ich habe versucht, die Dauer auf eine viel größere Zahl einstellen, aber das bewirkt, dass alle Bilder als auch verschwinden. Es muss eine wirklich grundlegende Art und Weise, dies zu tun?
Lösung 2
Hmmm ... da niemand scheint zu wissen, ich denke, es ist nicht möglich.
Ich ging weiter und schrieb meine eigene UIView
, mit einem UIImageView
subview
, die einem NSTimer
zwischen Bildern wechseln verwendet. Der Vorteil dabei ist, dass ich den Timer in meiner Freizeit unterbrechen und wieder aufnehmen kann, und die Leistung scheint nicht ein Problem zu sein.
Andere Tipps
Dieser Code wird ein animiertes Objekt an der aktuellen Position in dem Animationsprozess unterbrechen. Wenn Sie andere Variablen wie die Zeit oder Fortschritt aufzeichnen oder was auch immer Sie brauchen, sollte es ziemlich trivial wieder die Animation fortzusetzen.
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 nur ein wenig bearbeiten:
animatedView.animationImages = images; //images is your array
[animatedView startAnimating];
//Then when you need to pause;
[animatedView stopAnimating]; //Important!!
animatedView.image = [images objectAtIndex: 0];
Das sollte es tun: https://developer.apple .com / library / ios / # qa / qa2009 / qa1673.html
Es sagt im Grunde, was Sie jeden CALayer
basierte Animation zu pausieren / fortzusetzen tun müssen.
Wenn Sie sich unwohl fühlen mit CALayer
Methoden auf UIImageView
gesteuert Animation, können Sie immer machen nur die UIImage
Array basierte Animation selbst. Der Code benötigt wird, ist sehr kurz, können Sie es von hier nehmen: http://rssv2.blogspot.com/2011/04/animating-series-of-images-with-calayer.html
Eine andere Möglichkeit ist es, die Bildeigenschaft sowie die animationImages
Eigenschaft festzulegen. Dadurch wird das statische Bild anzuzeigen, wenn der UIImageView
hat seine Animationen gestoppt.
Unter der Annahme Ihrer Klasse eine Unterklasse von UIImageView
ist und haben eine NSMutableArray
von Bildern, wie folgt vor:
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];
Vielleicht können Sie einen Screenshot der letzten animiertes Bild nehmen und angezeigt werden?