Anhalten UIImageView Animation allmählich und reibungslos

8

Ich habe die folgende einfache UIImageView Animation:

%Vor%

Aber ich habe ein Problem, wenn die Animation aufhört Ich weiß nicht, was der letzte Frame ist, bei dem es aufhört !! also ist das Ende der Animation überhaupt nicht glatt.

also muss ich:

1) wissen, was das letzte Bild ist, bei dem die Animation endet, also setze ich es als letztes Bild der Animation und dies führt zu einem sanften Stoppen.

2) Stoppen Sie diese Animation schrittweise, d. h. ändern Sie ihre Dauer, bevor sie stoppt, um sie zuerst zu verlangsamen und dann zu stoppen.

Dies ist ein Link zum Beispielprojekt .

    
JAHelia 18.02.2013, 13:18
quelle

3 Antworten

2

Ich weiß, dass Ihre ursprüngliche Implementierung animationImages verwendet, aber ich kenne keine Möglichkeit, animationImages direkt mit einer kontinuierlich variablen Dauer zu verwenden. Dies ist jedoch eine ziemlich einfache Funktion, die Sie selbst implementieren können. Wenn Sie dies tun, können Sie einen dynamischen Wert für die Dauer zwischen Bildern in Ihrem Array codieren.

Im folgenden Code ersetze ich animationImages durch eine benutzerdefinierte Schrittfunktion und passt die Dauer dynamisch an, nachdem ein Stopp angefordert wurde. Beachten Sie, dass dies ein wenig anders ist als Ihr ursprünglicher Code, der eine harte Endzeit angegeben hat. Dieser Code gibt an, wann das Drehen des Zahnrads verlangsamt werden sollte.

Wenn Sie wirklich einen harten Animationszeitraum haben, können Sie den Aufruf von stopTheAnimation anpassen, um den Verzögerungsfaktor zu berücksichtigen (Ich verlängere einfach die Dauer um 10% pro Schritt, während der Verzögerung, bis die Schritte langsamer sind als ein bestimmter Schwellenwert):

%Vor%     
Nate 24.02.2013, 12:26
quelle
0

Ich kenne das nur, indem ich Blöcke benutze, aber so geht das:

%Vor%

Die Option 'UIViewAnimationOptionCurveEaseOut' sollte Ihre Animation allmählich stoppen. Sie können mit anderen Optionen spielen, um den Effekt für sich selbst zu sehen.

    
Sander Bruggeman 18.02.2013 16:19
quelle
0

Ihr Ansatz hat ein Problem: Die Anzahl der Bilder pro Sekunde ist nicht konstant (Sie verlangsamen die Zeit).

Sind Sie sicher, dass Sie eine Rahmenanimation benötigen?

Wenn Ihre Animation mit geometrischen (affinen) Transformationen erreicht werden kann, wäre es wirklich besser.

Wenn Ihre Animation mit einer Kombination von:

durchgeführt werden kann
  • Übersetzung
  • Rotation
  • Skalierung

dann ist dies eine affine Transformation.

    
Vincent Zgueb 24.02.2013 17:23
quelle