2011-09-19 5 views
6

W dokumentacji iOS użycie programu beginAnimation-commitAnimation jest odradzane. Tak więc w przypadku animacji i przejść istnieją nowe metody, które wykorzystują^bloki. Jednak kiedy używam transitionWithView: czas trwania: opcje: animacje: metoda zakończenie mam żadnego przejścia effects.So jeśli piszę:Animacja przejścia UIView nie działa z przejściemWithView: czas trwania: opcje: animacje: metoda uzupełniania

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn]; 
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp 
         forView:self.view cache:YES]; 

firstView.hidden = YES; 
secondView.hidden = NO; 
[UIView commitAnimations]; 

to działa, ale jeśli mogę to zrobić w następujący sposób

[UIView transitionWithView:self.view duration:1.0 options 
     UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp 
     animations:^{ 
      firstView.hidden = YES; 
      secondView.hidden = NO; 
     } completion:NULL 
     ]; 

I nie otrzymuj żadnych efektów przejścia. czego mi brakuje?

Odpowiedz

18

OK, znalazłem subtelny szczegół, który każdy musi wziąć pod uwagę, aby animacja i przejścia działały zgodnie z metodą dostępną w iOS 4 i później. Po określeniu opcji animacji/przejścia dla metody musimy użyj stałych ze słowem "Opcja". Więc zamiast pisać

UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp 

powinniśmy napisać

po ustaleniu, że przejście pracował dobrze

+0

Dzięki za to obserwacji. Dobra informacja! – GrimmRanger

+0

Ha, ładne miejsce i łatwy błąd w autouzupełnianiu ... gdzie jest bezpieczeństwo typu, gdy go potrzebujesz! – bandejapaisa

+0

O mój Boże! Spędziłem dwie frustrujące godziny na tym badziewie, aż znalazłem to. Apple poważnie musi zdeprecjonować wersje "nieopcjonalne". – rushinge

Powiązane problemy