管理从普通导航栏到透明导航栏的过渡
Posted
技术标签:
【中文标题】管理从普通导航栏到透明导航栏的过渡【英文标题】:Managing a transition from a normal NavigationBar to a transparent one 【发布时间】:2015-02-01 18:21:32 【问题描述】:我需要管理嵌入在使用标准、浅色、模糊层的 NavigationController 中的两个 ViewController 之间的转换。应用程序这一部分中的所有 ViewController 看起来都非常适合这个模糊层,除了一个,而我希望它淡出成为一个完全透明的条并在我弹出这个 ViewController 时恢复正常。
期望的行为:
我已经研究了很长时间,但我无法弄清楚如何完成它。有人可以帮我吗?我已经研究了this question,但我不太明白如何实现它。
谢谢!
【问题讨论】:
【参考方案1】:你看过UIViewControllerTransitionCoordinator
吗?
每个UIViewController
都有一个transitionCoordinator
属性,您可以访问该属性来执行与转换相关的任务。
从UIViewController
的viewWillAppear
/viewWillDisappear
方法进行转换,调用transitionCoordinator
的animateAlongsideTransition
方法:
id <UIViewControllerTransitionCoordinator> coordinator = [self transitionCoordinator];
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
// animate the changes in the navigation bar here
completion:nil];
【讨论】:
我明白了,所以我将把这段代码放在“不透明”VC 和透明 VC 中?哪种方法最合适? 这实际上取决于您想要实现的过渡效果以及您制作动画的视图。如果要淡化透明VC背景,则在透明VC中添加代码。 我的意图是让 UINavigationBar (或 UINavigationItem) 淡出,这样在 VC1 上,它会完全正常,轻,模糊,然后 - 在 segue 时,淡出它变得完全透明. VC 本身保持不变 我将代码放在需要UINavigationBar
更改的 UIViewController
中,推送的代码。
是的,同意 - 如果我无法弄清楚,我会发布一个新问题。非常感谢您的帮助!以上是关于管理从普通导航栏到透明导航栏的过渡的主要内容,如果未能解决你的问题,请参考以下文章
Matplotlib 中的透明导航栏(或者,可以在没有栏的情况下添加导航按钮吗?)