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
UIImageView2UIButtons 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 (UIImageViewsolo 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 UIImageViewnon funziona correttamente, perché quando viene premuto (tramite il pulsante) bigLetterannulla 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