iOS:UIView 动画,没有动画发生
Posted
技术标签:
【中文标题】iOS:UIView 动画,没有动画发生【英文标题】:iOS: UIView animation, no animating happening 【发布时间】:2011-02-11 11:08:20 【问题描述】:有一个令人费解的问题。我有一个通用应用程序,在 iPad 和 iPhone 版本之间有很多共享代码。 nib 中有不同的布局,但视图和视图层次结构基本相同 - 一个 UIView 用作两个兄弟 UITextView 的容器。
带有孩子的 UIView 主视图: 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。我尝试了几种方法,但即使显示/隐藏工作正常,我也没有得到任何动画。
【问题讨论】:
【参考方案1】:我认为您使用了错误的动画选项。
用UIViewAnimationOptionTransitionFlipFromLeft
替换您的第二个动画选项(注意Animation
和Transition
之间的Option
)
我相信UIViewAnimationTransitionFlipFromLeft
(这是您的代码中的内容)是UIViewAnimationTransition
,而不是UIViewAnimationOptions
。
【讨论】:
我曾考虑过这一点,但 Apple 的动画视图编程指南部分有一个使用 UIViewAnimationOptionTransitionFlipFromRight 作为 UIViewAnimationOptions 选项的示例。在这种情况下,他们使用 transitionFromView:toView: 来制作动画,但我也尝试过这种方法,但没有成功。 但是您是否真的按照我的建议尝试将UIViewAnimationTransitionFlipFromLeft
替换为UIViewAnimationOptionTransitionFlipFromLeft
?我问是因为(a)我认为它会起作用,并且(b)它们解析为不同的数字。 UIViewAnimationTransitionFlipFromLeft 解析为 1 而 UIViewAnimationOptionTransitionFlipFromLeft 解析为 1
啊,你是对的。我没有注意到您原始评论中的区别-它们是不同的值,更改为 UIViewAnimationOptionTransitionFlipFromLeft 修复了它。
没问题。很高兴能帮上忙。
谢谢!您节省了我在此 =)"(&! 问题上花费的更多时间。正在搜索超过 2 小时的解决方案...我在阅读文档时应该更加小心。以上是关于iOS:UIView 动画,没有动画发生的主要内容,如果未能解决你的问题,请参考以下文章