1

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

UIView mainView with children:
UITextView
段落TextView 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。我尝试了几种方法,但即使显示/隐藏工作正常,我也没有得到任何动画。

4

1 回答 1

7

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

将您的第二个动画选项替换为UIViewAnimationOptionTransitionFlipFromLeft(注意Option中间AnimationTransition

我相信UIViewAnimationTransitionFlipFromLeft(这就是您的代码中的内容)UIViewAnimationTransition不是UIViewAnimationOptions.

于 2011-02-11T21:23:03.897 回答