Ich richte die folgende UIView animateWithDuration:
-Methode ein, mit der Absicht, meine animationOn
BOOL an einem anderen Ort im Programm zu setzen, um diese Endlosschleife zu beenden. Ich hatte den Eindruck, dass der Block completion
jedes Mal aufgerufen wird, wenn ein Zyklus der Animation endet, aber das scheint nicht der Fall zu sein.Stoppen Sie eine UIView-Animation mit automatischem Reverse/unendlichen Wiederholungen mit einem BOOL/Completion-Block
Wird der completion
-Block jemals in einer sich wiederholenden Animation aufgerufen? Und wenn nicht, gibt es eine andere Möglichkeit, diese Animation von außerhalb dieser Methode zu stoppen?
- (void) animateFirst: (UIButton *) button
{
button.transform = CGAffineTransformMakeScale(1.1, 1.1);
[UIView animateWithDuration: 0.4
delay: 0.0
options: UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
animations: ^{
button.transform = CGAffineTransformIdentity;
} completion: ^(BOOL finished){
if (!animationOn) {
[UIView setAnimationRepeatCount: 0];
}
}];
}
Das hat nicht funktioniert, fürchte ich. Die Animation wird noch ausgeführt, nachdem die Änderung der Transformation angewendet wurde. (Ich habe '.transform' auf' CGAffineTransformMakeScale (1.0, 1.0) 'gesetzt). – Luke
Ich habe etwas anderes gefunden, das funktionieren könnte. Ich habe meine Antwort aktualisiert. Kannst du das versuchen? –
Oh, du hast es selbst herausgefunden :) Danke, dass du meine Antwort trotzdem angenommen hast –