【问题标题】:Managing a transition from a normal NavigationBar to a transparent one管理从普通导航栏到透明导航栏的过渡
【发布时间】:2015-02-01 18:21:32
【问题描述】:

我需要管理嵌入在使用标准、浅色、模糊层的 NavigationController 中的两个 ViewController 之间的转换。应用程序这一部分中的所有 ViewController 看起来都非常适合这个模糊层,除了一个,而我希望它淡出成为一个完全透明的条并在我弹出这个 ViewController 时恢复正常。

期望的行为:

我已经研究了很长时间,但我无法弄清楚如何完成它。有人可以帮我吗?我已经研究了this question,但我不太明白如何实现它。

谢谢!

【问题讨论】:

    标签: ios objective-c uinavigationcontroller uinavigationbar uinavigationitem


    【解决方案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 中,推送的代码。
    • 是的,同意 - 如果我无法弄清楚,我会发布一个新问题。非常感谢您的帮助!
    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-09-21
    相关资源
    最近更新 更多