Mam ViewController z wiązką UIImageViews, które muszę wysłać do przodu i animować do centrum widoku.iOS bringSubviewToFront blokowanie animacji UIView
Przed wywołaniem animacji UIView próbowałem wywołać metodę bringSubviewToFront, a co się dzieje, jest to, że widok jest wysyłany na szczyt stosu, ale animacja się nie dzieje (mimo że dziennik programu obsługi kończy się, jak gdyby animacja DID się stało).
drugi raz nacisnąć przycisk, który uruchamia animację (biorąc pod uwagę, że tym razem widok jest już w górnym indeksie, animacja odbywa się tak jak powinien)
Heres mój kod:
- (void)beginAnimationWithSelectedCountry:(UIView *)countryView
{
if (!countryView) return;
[self.view bringSubviewToFront:countryView];
[UIView animateWithDuration:0.6f delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
countryView.center = CGPointMake(self.view.center.x, self.view.center.y);
} completion:^(BOOL finished) {
NSLog(@"Animation complete");
}];
}
Jakieś myśli? Byłem w tym od wielu godzin. <
Dzięki
EDIT: Gdybym zakomentuj bringSubviewToFront kod wykonuje bezbłędnie z animacji (z wyjątkiem widok jest w niektórych innych poglądów), więc jestem preety pewien problem jest z linią:
[self.view bringSubviewToFront:countryView];
Herezje zrzut ekranu, co mam obecnie, które mogą rzucić nieco więcej światła na ten problem: http://d.pr/i/PKoa
Zacznę od tego zwrotu if-return tam i zobaczę, czy twoja metoda jest nawet wywoływana za pierwszym razem z NSLogiem. – CodaFi
Już sprawdziłem, ponieważ napisałem, że dziennik "Animacja zakończona" jest wywoływany oba razy. Dzięki jednak, –
zrób to - umieść animację w drugiej metodzie o nazwie animateCountry, w której umieścisz kod animacji - w metodzie begin wywołaj bringSubViewToFront - następnie wywołaj [self performSelector: animateCountry ... to zadziała. –