管理从普通导航栏到透明导航栏的过渡

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 属性,您可以访问该属性来执行与转换相关的任务。

UIViewControllerviewWillAppear/viewWillDisappear 方法进行转换,调用transitionCoordinatoranimateAlongsideTransition 方法:

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 中的透明导航栏(或者,可以在没有栏的情况下添加导航按钮吗?)

使用与标签栏相同的视觉效果设置导航栏的样式

在 Swift iOS 8 中设置透明导航栏和状态栏的图像底图

带有透明/模糊导航栏的 iOS 7 视图控制器布局问题

导航栏的影响控件的向下偏移!