Wir wissen, dass UIImageView
eine sehr gute Unterstützung für die Bildsequenzanimation bietet. Wir können einfach ein Array von UIImage-Objekten erstellen, die animationImages
-Eigenschaft festlegen, die Animationsdauer konfigurieren, die Anzahl der Wiederholungen usw. festlegen und dann einfach auslösen. Aber es scheint keine Möglichkeit zu geben, wann diese Animation beendet ist.
Sagen wir, ich habe zehn Bilder und dann möchte ich eine Animation (Wiederholungszahl = 1) mit ihnen laufen lassen. Und wenn die Animation vorbei ist, möchte ich einen anderen Code ausführen. Was ist der beste Weg zu wissen, dass die Animation beendet ist?
Ich verstehe bereits, dass ich ein NSTimer
erstellen und festlegen kann, dass es nach der Animationsdauer ausgelöst wird. Aber Sie können sich wirklich nicht auf Timer verlassen, wenn Sie gute Präzision benötigen.
Also meine Frage ist, gibt es einen besseren Weg zu wissen, dass eine UIImageView
Bildsequenzanimation ohne Verwendung des Timers beendet wurde?
Der Code ist so etwas wie
%Vor% Die Eigenschaft isAnimating
in UIImageView sollte nach dem Animieren auf NO
gehen. Es ist jedoch keine formale Eigenschaft, daher kann man keine Beobachtung darauf aufbauen. Sie können es auf einem feinkörnigen Timer abfragen (wie CADisplayLink
).
Es gibt keinen Delegierten für "Animation abgeschlossen", wenn Sie genau danach suchen. Das Timing kann basierend auf der Ladeverzögerung der Bilder usw. variieren, und nein, es gibt keine sichere Methode, um genau zu wissen, wann es fertig ist.
Das Bildanimationsmaterial auf UIImageView ist eine Annehmlichkeit und nicht schwer genug, um ernsthafte Animationsarbeit zu machen. Erwägen Sie, Ihre eigenen zu rollen, wenn Sie diese Art von Präzision benötigen.
Außerdem könnte ich empfehlen, das Standardbild der UIImageView (Eigenschaft image
) im ersten Frame der Animation zu setzen und es direkt nach dem Start der Animation in das letzte Frame zu ändern ( startAnimating
method). Auf diese Weise vermeiden wir den hässlichen Blick, der auftreten kann, wenn die Animation beendet ist, aber der Callback nicht aufgerufen wird.
Tags und Links objective-c iphone ios uiimageview