有一个令人费解的问题。我有一个通用的应用程序,在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正在工作,我也没有得到任何动画。
答案 0 :(得分:7)
我认为您使用的是错误的动画选项。
在UIViewAnimationOptionTransitionFlipFromLeft
之前替换您的第二个动画选项(注意Option
和Animation
之间的Transition
)
我相信UIViewAnimationTransitionFlipFromLeft
(您的代码中包含的内容)是UIViewAnimationTransition
而不是UIViewAnimationOptions
。