iOS:UIView动画,没有动画发生

Chr*_*rts 1 uiview uiviewanimation ios

有一个令人费解的问题.我有一个通用的应用程序,在iPad和iPhone版本之间有很多共享代码.在nib中有不同的布局,但基本上是相同的视图和视图层次结构 - 一个UIView用作两个兄弟UITextViews的容器.

UIView的MAINVIEW儿童:
UITextView的passageTextView
的UITextView notesTextView

一个UITextView被隐藏,另一个可见.

以下是我的代码.注释掉的部分是我原来的动画尝试.这在iPad上可以正常工作,但在iPhone上却没有.使用文档中建议的方法,取消注释部分为2.未注释的代码在iPad或iPhone上都不起作用 - 它隐藏/取消隐藏我的视图但没有任何动画.如果我将代码添加到也被执行的完成块,那么它正在做某事,而不是动画.

/*  
[UIView beginAnimations:nil context:nil];  
[UIView setAnimationDuration:1.0];  
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mainView cache:YES];  

passageTextView.hidden = YES;  
notesTextView.hidden = NO;  

[UIView commitAnimations];  
*/  

UIViewAnimationOptions options = UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationTransitionFlipFromRight;  

[UIView transitionWithView:mainView  
                  duration:1.0  
                   options:options  
                animations:^{ passageTextView.hidden = YES; notesTextView.hidden = NO; }  
                completion:NULL];  
Run Code Online (Sandbox Code Playgroud)

编辑:仍然在解决这个问题,希望有人有一个建议.

其他更新

弄清楚为什么以下不适用于iPhone:

[UIView beginAnimations:nil context:nil];  
[UIView setAnimationDuration:1.0];  
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mainView cache:YES];  

passageTextView.hidden = YES;  
notesTextView.hidden = NO;  

[UIView commitAnimations];
Run Code Online (Sandbox Code Playgroud)

我忽略了将视图连接到Interface Builder中的mainView.几个小时的调试,我刚考虑检查.

但是,我仍然不知道为什么动画块不能用于iPhone或iPad.我已经尝试了几种方法,但即使显示/隐藏正在工作,我也没有得到任何动画.

Rob*_*Cat 7

我认为你使用的是错误的动画选项.

替换你的第二个动画选项UIViewAnimationOptionTransitionFlipFromLeft(注意Option之间AnimationTransition)

我相信UIViewAnimationTransitionFlipFromLeft(你的代码中有你的东西)UIViewAnimationTransition不是UIViewAnimationOptions.