In den meisten Fällen, oder weil wir es gewohnt, oder weil wir haben in Tutorien gesehen und in einigen Texten, verwenden wir die setAnimationDidStopSelector auf diese Weise:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | nil context : NULL ] ; [UIView beginAnimations: nil context: NULL]; 1.5 ] ; [UIView setAnimationDuration: 1,5]; UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; self ] ; [UIView setAnimationDelegate: self]; @selector ( removeView ) ] ; [UIView setAnimationDidStopSelector: @ selector (removeView)]; ; myView.alpha = 0; ; [UIView commitAnimations]; / / void ) removeView { - (Void) {removeView ; [MyView removeFromSuperview]; } |
come delegato e tramite la setAnimationDidStopSelector gli invia un messaggio removeView quando l'animazione è terminata. In den obigen Code die setAnimationDelegate Satz self als Delegierter und durch setAnimationDidStopSelector sendet eine Nachricht removeView , wenn die Animation beendet ist. Der Code selbst ist richtig, aber nutzt eine Nachricht Definition ( removeView ), die weggelassen werden könnte. Nun, hier ist der gleiche Code, mit dem gleichen Effekt, ohne die Nachricht removeView :
1 2 3 4 5 6 7 8 9 | nil context : NULL ] ; [UIView beginAnimations: nil context: NULL]; 1.5 ] ; [UIView setAnimationDuration: 1,5]; UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; myView ] ; [UIView setAnimationDelegate: myView]; @selector ( removeFromSuperview ) ] ; [UIView setAnimationDidStopSelector: @ selector (removeFromSuperview)]; ; myView.alpha = 0; ; [UIView commitAnimations]; |
! Das Interessante an diesem Ansatz ist, dass myView könnte eine Unterklasse von werden UIView ! Es kann daher eine benutzerdefinierte Klasse mit eigenen Nachrichten und, wie gesagt, leicht aufrufbar sein setAnimationDidStopSelector . Darüber hinaus die setAnimationDidStopSelector einverstanden Selektoren mit den Parametern:
1 2 3 4 5 6 7 8 9 | nil context : NULL ] ; [UIView beginAnimations: nil context: NULL]; 1.5 ] ; [UIView setAnimationDuration: 1,5]; UIViewAnimationCurveEaseInOut ] ; [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut]; myView ] ; [UIView setAnimationDelegate: myView]; @selector ( myMessage : param1 : ) ] ; [UIView setAnimationDidStopSelector: @ selector (myMessage: param1:)]; ; myView.alpha = 0; ; [UIView commitAnimations]; |
Dieses Beispiel auf alle Fälle hier, wo wir ein Delegierter erweitert werden kann, ist Atro nicht einen Zeiger auf eine Instanz eines Objekts.










[...] Mit setAnimationDidStopSelector auf einem UIView-Klasse ist äußerst vielseitig, wie in setAnimationDidStopSelector gesehen: verschiedene Verwendungen und Fortgeschrittene. Lassen Sie mich Ihnen nun eine Technik sehr bequem, wenn wir mehrere Animationen und / oder [...]