Ich habe viele SO-Sachen und in Apples Referenzen gesucht, kann mein Problem aber immer noch nicht lösen.
Was ich habe:
- Ein Bildschirm mit 2
UIImageView
s und 2UIButton
s ist damit verbunden - 2 Arten von Animationen:
- Skalieren Sie jedes Bild nacheinander nur einmal nach oben und unten
viewDidLoad
- Wenn eine Taste gedrückt wird (eine benutzerdefinierte Schaltfläche, die in jedem von ihnen versteckt ist
UIImageView
), wird eine Animation von einer geeigneten -UIImageView
nur einer, nicht von beiden - ausgelöst (auch skalieren, dann verkleinern). - Während ich für iOS4 + schreibe, wird mir gesagt, dass ich blockbasierte Animationen verwenden soll!
- Skalieren Sie jedes Bild nacheinander nur einmal nach oben und unten
Was ich brauche:
Wie kann ich eine laufende Animation abbrechen? Ich habe es doch geschafft, bis auf den letzten abzubrechen ...: /
Hier ist mein Code-Snippet:
[UIImageView animateWithDuration:2.0
delay:0.1
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
isAnimating = YES;
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.bigLetter.transform = CGAffineTransformScale(self.bigLetter.transform, 0.5, 0.5);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 2.0, 2.0);
} completion:^(BOOL finished){
if(! finished) return;
[UIImageView animateWithDuration:2.0
delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
self.smallLetter.transform = CGAffineTransformScale(self.smallLetter.transform, 0.5, 0.5);
}
completion:^(BOOL finished){
if (!finished) return;
//block letter buttons
[self.bigLetterButton setUserInteractionEnabled:YES];
[self.smallLetterButton setUserInteractionEnabled:YES];
//NSLog(@"vieDidLoad animations finished");
}];
}];
}];
}];
Irgendwie smallLetter
UIImageView
funktioniert das nicht richtig, weil beim Drücken (Durch-Taste) bigLetter
Animationen richtig abgebrochen werden ...
BEARBEITEN:
Ich habe diese Lösung verwendet, habe aber immer noch Probleme mit der Verkleinerung smallLetter
UIImageView
- überhaupt nicht abbrechen ...
Lösung
EDIT2: Ich habe dies am Anfang der next / prev-Methoden hinzugefügt:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
Problem bleibt ...: / Keine Ahnung, wie die letzte Animation für Buchstaben in der Animationskette unterbrochen werden soll