iOS - 跨视图控制器保持背景动画

Posted

技术标签:

【中文标题】iOS - 跨视图控制器保持背景动画【英文标题】:iOS - Keep background animation across view controllers 【发布时间】:2013-09-11 17:44:16 【问题描述】:

我正在为应用程序的设置页面使用基本的 UINavigationController 设计。每个设置页面都是自己的视图控制器(带有 xib),并且每个页面都有相同的背景图像。

我已经构建了一个基于视图的动画来替换背景图像,并且我希望它在用户从一个页面移动到另一个页面时不间断地播放。换句话说,就好像每个设置页面都有一个透明背景,所有这些页面下方都是我的动画视图的一个实例。

我该怎么做呢?

到目前为止,我已经尝试将动画分别放在每个页面上,但过渡对我来说看起来有点太草率了。我还考虑过以某种方式在我的导航控制器下拥有一个包含所有必要动画的 UIView,但不确定 a)是否可行,以及 b)如何去做。

感谢阅读。

【问题讨论】:

【参考方案1】:

听起来你想使用“容器视图控制器”

您可以在此处阅读 Apple 文档:https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/CreatingCustomContainerViewControllers/CreatingCustomContainerViewControllers.html


解决方案是让一个主视图控制器保留您的设置视图控制器。设置视图控制器的背景是透明的,因此您可以看到主视图控制器的背景。

至于动画,请参阅我提供给您的链接上的Listing 14-3 Transitioning between two view controllers

【讨论】:

谢谢!我最终将我的动画代码放入自定义 UINavigationController(我想是一种容器视图控制器?),然后将我所有 UIViewControllers 的背景设置为透明,这似乎可以解决问题! 如果你的目标是 iOS 6 下的任何东西,你不应该继承 UINavigationController。但是,导航控制器只包含容器视图控制器 好的,很高兴知道。为什么不应该为旧操作系统子类化? 阅读https://developer.apple.com/library/ios/documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html上第一段最后一句...This class is generally used as-is but may be subclassed in iOS 6 and later. 它的无证行为,可能会导致代码中出现红鲱鱼,最好坚持使用苹果支持的内容,以免日后让自己头疼。

以上是关于iOS - 跨视图控制器保持背景动画的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 中呈现一个半透明(半切)的视图控制器?

跨视图控制器保持子上下文

iOS:具有透明背景的模态 ViewController

跨多个视图控制器共享背景图像

UINavigationController 在 iOS 7 中推送动画不流畅

加载视图时导航栏跳跃