Pesquisei um monte de coisas de SO e referências da Apple, mas ainda não consegui gerenciar meu problema.
O que eu tenho:
- Uma tela com 2 se
UIImageView
2UIButton
s conectada a eles - 2 tipos de animação:
- Aumentar e diminuir cada imagem, uma após a outra, apenas uma vez em
viewDidLoad
- Quando um botão é pressionado (um botão personalizado escondido 'dentro' de cada um
UIImageView
), ele dispara a animação apropriadaUIImageView
- apenas um, não ambos - (também aumenta e depois diminui). - Como estou escrevendo para iOS4 +, recebo instruções para usar animações baseadas em blocos!
- Aumentar e diminuir cada imagem, uma após a outra, apenas uma vez em
O que eu preciso:
Como cancelo uma animação em execução? Afinal, consegui cancelar, menos o último ...: /
Aqui está meu snippet de código:
[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");
}];
}];
}];
}];
De alguma forma o smallLetter
UIImageView
não está funcionando corretamente, porque quando pressionado (através do botão) bigLetter
está cancelando as animações corretamente ...
EDIT:
Eu usei esta solução, mas ainda estou tendo problemas com a redução smallLetter
UIImageView
- não cancelando nada ...
solução
EDIT2: Eu adicionei isso no início dos métodos next / anterior:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
o problema permanece ...: / não faço ideia de como interromper a última animação de letras na cadeia de animação