iPhone: Die beste Methode, um das Ende der UIImageView-Bildsequenzanimation zu erkennen

8

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%     
taskinoor 22.09.2010, 15:39
quelle

3 Antworten

8

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.

    
Ben Zotto 22.09.2010, 16:07
quelle
1

Ich habe dies (Methode meiner UIImageView-Unterklasse) gemacht.

%Vor%

Einfache Verwendung:

%Vor%     
Geri 03.05.2013 16:55
quelle
0

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.

    
Kaktusiarz 30.12.2015 21:54
quelle