Анимация перехода UIView не работает с transitionWithView: duration: Опции: Анимации: Метод завершения - PullRequest
6 голосов
/ 19 сентября 2011

В документации по iOS использование beginAnimation-commitAnimation не рекомендуется. Так что для анимации и переходов есть новые методы, которые используют блоки ^. Однако, когда я использую transitionWithView: duration: options: animations: метод завершения, я не получаю никаких эффектов перехода. Так что, если я пишу:

[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];

это работает, но если я сделаю это следующим образом

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

Я не получаю никаких эффектов перехода. Чего мне не хватает?

1 Ответ

18 голосов
/ 20 сентября 2011

ОК, я обнаружил тонкие детали, на которые все должны обратить внимание, чтобы анимация и переходы работали с методом, доступным в iOS 4 и более поздних версиях. При указании параметров анимации / перехода для метода, который мы должны использоватьконстанты со словом «Вариант» в нем.Поэтому вместо записи

UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp

мы должны написать

UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionTransitionCurlUp

после исправления, что переход работал нормально

...