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?

War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top