Warten Sie, bis die Animation zu beenden in iOS?
Möchte ich ausführen doSomethingElse, nachdem die animation beendet ist. Eine weitere Einschränkung ist, dass die animation code können von unterschiedlicher Dauer. Wie kann ich das tun? danke!
-(void) doAnimationThenSomethingElse {
[self doAnimation];
[self doSomethingElse];
}
Diese zum Beispiel funktioniert nicht:
animationDuration = 1;
[UIView animateWithDuration:animationDuration
animations:^{
[self doAnimation];
} completion:^(BOOL finished) {
[self doSomethingElse];
}
];
- Ihre Frage kann nicht gelöst werden von dem, was Sie zur Verfügung gestellt haben. Siehe meine Antwort unten, um das Verhalten, das Sie möchten Sie müssen in der Lage sein, um zu sehen, den code, führt die animation (die ist gekapselt durch doAnimation hier).
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht der Autor der animation, können Sie einen Rückruf, wenn die animation endet mit einem Abschluss der Transaktion block:
Verwenden Sie block-Animationen:
doAnimation
animiert für eine bestimmte Zeit, dann ist es doch irgendwie wissen, dass die Zeit, ich. e. es hat eine variable mit der Dauer (irgendwo es muss sein). Den code, den ich gezeigt habe, in derdoAnimation
- Funktion, und rufen Sie[self doSomethingElse];
von der Vollendung blockieren.completion:^(BOOL finished)
ist es läuft nachdem dieanimations
block. Dies ist der beste Weg, es zu tun.Müssen Sie in der Lage sein, um Zugriff auf die spezifischen Instanzen der Animationen laufen Sie in Reihenfolge zu koordinieren die Abschluss-Aktionen für jeden. In deinem Beispiel [self doAnimation] nicht uns aussetzen, um alle Animationen, so dass Ihre Frage nicht "gelöst" mit dem, was Sie haben.
Gibt es nur wenige Möglichkeiten, das zu erreichen, was Sie wollen, aber es hängt davon ab, welche Art von Animationen, die Sie zu tun haben.
Wie schon in anderen Antworten, die häufigste Weg, um code auszuführen, nachdem Sie eine animation über eine view übergeben completionBlock in:
animateWithDuration:completion:
einen Anderen Weg zu handle-Eigenschaft ändern-Animationen zu setzen, ist eineCATransaction
Abschluss-block im Rahmen der Transaktion.Jedoch, diese Methoden sind im wesentlichen für die animierende Eigenschaft oder Hierarchie-änderungen in Aussicht. Es ist der empfohlene Weg, wenn Sie Ihre Animationen beinhalten Ansichten und deren Eigenschaften, aber es gilt nicht für alle Arten von Animationen, die Sie sonst zu finden in iOS. Aus Ihrer Frage, es ist nicht klar, welche Art von Animationen, die Sie verwenden (oder, wie oder warum), aber wenn Sie tatsächlich berühren Instanzen CAAnimations (eine key-frame-animation oder eine Gruppe von Animationen), was Sie normalerweise tun, ist ein delegieren:
Der Punkt ist, wie Ihre Abschluss-handling implementiert wird, hängt davon ab, wie Ihre animation umgesetzt wird. In diesem Fall können wir nicht sehen, die letztere, so können wir nicht bestimmen, das ehemalige.
http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIView_Class/UIView/UIView.html
gibt es die UIView-Dokumentation, scrollen Sie nach unten, um die
Animieren von Ansichten, die mit Blöcken
und
Animieren Von Ansichten
sehen, hyperlinks, springen Sie auf die verschiedenen Teile der Seite, die erklären, wie das animieren von Ansichten, die diejenigen, die Sie wollen, sind, unter
"Animieren von Ansichten mit den Bausteinen"
Lesen Sie die Namen der Methoden macht Sie selbsterklärend
Aus Ihren Kommentaren würd ich dir empfehlen: