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

时间:2011-02-11 11:08:20

标签: ios uiview uiviewanimation

有一个令人费解的问题。我有一个通用的应用程序,在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];  

编辑:仍在处理此问题,希望有人提出建议。

其他更新

弄清楚为什么以下内容无法在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];

我忽略了将视图连接到Interface Builder中的mainView。几个小时的调试,我现在想要检查一下。

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

1 个答案:

答案 0 :(得分:7)

我认为您使用的是错误的动画选项。

UIViewAnimationOptionTransitionFlipFromLeft之前替换您的第二个动画选项(注意OptionAnimation之间的Transition

我相信UIViewAnimationTransitionFlipFromLeft(您的代码中包含的内容)是UIViewAnimationTransition而不是UIViewAnimationOptions