Ho cercato un sacco di cose SO e nei riferimenti di Apple, ma non sono ancora in grado di gestire il mio problema.
Ciò che ho:
- Uno schermo con 2 se
UIImageView
2UIButton
s ad essi collegati - 2 tipi di animazione:
- Ridimensionamento verso l'alto e poi verso il basso di ogni immagine, uno dopo l'altro, solo una volta
viewDidLoad
- Quando si preme un pulsante (un pulsante personalizzato nascosto "all'interno" di ciascuno
UIImageView
), si attiva l'animazione dell'appropriato (UIImageView
solo uno, non entrambi) (anche in scala verso l'alto, poi verso il basso). - Mentre scrivo per iOS4 + mi è stato detto di usare animazioni basate su blocchi!
- Ridimensionamento verso l'alto e poi verso il basso di ogni immagine, uno dopo l'altro, solo una volta
Ciò che di cui ho bisogno:
Come si annulla un'animazione in esecuzione? Sono riuscito a cancellarmi dopo tutto tranne l'ultimo ...: /
Ecco il mio frammento di codice:
[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");
}];
}];
}];
}];
In qualche modo il smallLetter
UIImageView
non funziona correttamente, perché quando viene premuto (tramite il pulsante) bigLetter
annulla correttamente le animazioni ...
EDIT:
ho usato questa soluzione, ma ho ancora problemi con il ridimensionamento smallLetter
UIImageView
- non annullando affatto ...
soluzione
EDIT2: l' ho aggiunto all'inizio dei metodi next / prev:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
il problema rimane ...: / non ho idea di come interrompere l'ultima animazione per le lettere nella catena dell'animazione