首页 文章

自定义导航栏而不影响层次结构中的其他视图控制器

提问于
浏览
0

我有一个需要克服的导航栏定制问题,希望之前有人想要这样的行为 .

在我的导航堆栈中有特定的视图控制器,我想要一个完全透明的导航栏,我使用此代码来执行此操作:

// Make navigation bar transparent
[self.navigationController.navigationBar setBackgroundImage:[UIImage new]
                                              forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.navigationBar.translucent = YES;
self.navigationController.view.backgroundColor = [UIColor clearColor];

问题是,当我'回弹'到我的根视图控制器时,它的导航栏现在也是透明的,我不希望这样 . 我需要一种方法来只定制特定视图控制器中的导航栏,而不会完全搞砸其他视图控制器 .

注意:UIAppearance whenContainedIn将不起作用,并且这当前在viewDidLoad中设置了样式 .

2 回答

  • 0

    您可以在 viewWillAppear 中应用新样式,并在 viewWillDisappearviewDidDisappearviewDidUnload '中恢复为旧样式或默认样式,以适合您的应用 .

  • 0

    我想在你的情况下你可以使用UIApparence协议的方法appearanceWhenContainedIn .

    这将允许每个容器控制UINavigationBar外观 .

相关问题