Я шукав безліч матеріалів SO та у посиланнях Apple, але все ще не можу впоратися зі своєю проблемою.
Що я маю:
- Екран із підключеними до них 2
UIImageView
с і 2UIButton
с - 2 види анімації:
- Масштабування, а потім зменшення кожного зображення, одне за одним, лише один раз
viewDidLoad
- При натисканні кнопки (спеціальна кнопка, прихована «всередині» кожної
UIImageView
), вона запускає відповідну анімацію - лишеUIImageView
одну, а не обидві - (також масштабуйте вгору, потім вниз). - Поки я пишу для iOS4 +, мені наказали використовувати анімацію на основі блоків!
- Масштабування, а потім зменшення кожного зображення, одне за одним, лише один раз
Що мені потрібно:
Як скасувати запущену анімацію? Мені вдалося скасувати все-таки, крім останнього ...: /
Ось мій фрагмент коду:
[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");
}];
}];
}];
}];
Якось smallLetter
UIImageView
не працює належним чином, оскільки при натисканні (через кнопку) bigLetter
анімація скасовується належним чином ...
EDIT:
Я використовував це рішення, але все ще маю проблему зі зменшенням масштабу smallLetter
UIImageView
- взагалі не скасовуючи ...
рішення
EDIT2: Я додав це на початку наступних / попередніх методів:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
проблема залишається ...: / / не знаю, як перервати останню анімацію для літер в ланцюжку анімації