Przeszukałem mnóstwo rzeczy SO i referencji Apple, ale nadal nie mogę poradzić sobie z moim problemem.
Co ja mam:
- Ekran z podłączonymi
UIImageView
2UIButton
si 2 s - 2 rodzaje animacji:
- Skalowanie w górę, a następnie w dół każdego obrazu, jeden po drugim, tylko raz
viewDidLoad
- Naciśnięcie przycisku (niestandardowy przycisk ukryty „wewnątrz” każdego przycisku
UIImageView
) uruchamia animację odpowiedniego -UIImageView
tylko jednego, a nie obu - (również skalowanie w górę, a następnie w dół). - Kiedy piszę dla iOS4 +, powiedziano mi, żebym używał animacji blokowych!
- Skalowanie w górę, a następnie w dół każdego obrazu, jeden po drugim, tylko raz
Czego potrzebuję:
Jak anulować uruchomioną animację? Udało mi się zrezygnować mimo wszystko oprócz ostatniego ...: /
Oto mój fragment kodu:
[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");
}];
}];
}];
}];
Jakoś smallLetter
UIImageView
nie działa poprawnie, bo po wciśnięciu (przez przycisk) bigLetter
animacje są poprawnie anulowane ...
EDYCJA:
Użyłem tego rozwiązania, ale nadal mam problem ze skalowaniem w dół smallLetter
UIImageView
- nie anulowałem wcale ...
rozwiązanie
EDIT2: dodałem to na początku metod next / prev:
- (void)stopAnimation:(UIImageView*)source {
[UIView animateWithDuration:0.01
delay:0.0
options:(UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction)
animations:^ {
source.transform = CGAffineTransformIdentity;
}
completion:NULL
];
}
problem pozostaje ...: / nie mam pojęcia jak przerwać ostatnią animację dla liter w łańcuchu animacji