UIView过渡动画不适用于transitionWithView:duration:options:animations:completion方法

Mik*_*yev 6 uiviewanimationtransition ios4

在iOS文档中,不鼓励使用beginAnimation-commitAnimation.因此,对于动画和过渡,有一些新方法可以使用^块.但是,当我使用transitionWithView:duration:options:animations:completion方法我没有过渡效果.所以如果我写:

[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];
Run Code Online (Sandbox Code Playgroud)

它的工作原理,但如果我这样做的话

[UIView transitionWithView:self.view duration:1.0 options 
      UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp
        animations:^{
          firstView.hidden = YES;
          secondView.hidden = NO;
         } completion:NULL
         ];
Run Code Online (Sandbox Code Playgroud)

我没有任何过渡效果.我错过了什么?

Mik*_*yev 18

好的,我已经找到了每个人都需要注意的微妙细节,以便使用iOS 4及更高版本中可用的方法来处理动画和过渡.当为方法指定动画/过渡选项时,我们必须使用常量其中的"选项"一词.所以不要写作

UIViewAnimationCurveEaseIn|UIViewAnimationTransitionCurlUp
Run Code Online (Sandbox Code Playgroud)

我们应该写

UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionTransitionCurlUp
Run Code Online (Sandbox Code Playgroud)

在确定转换工作正常后