我有一个需要克服的导航栏自定义问题,希望之前有人想要这样的行为。
在我的导航堆栈中有特定的视图控制器,我想要一个完全透明的导航栏,我使用此代码来执行此操作:
// 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中设置了样式。
答案 0 :(得分:0)
您可以在viewWillAppear
中应用新样式,并在viewWillDisappear
或viewDidDisappear
或viewDidUnload
'中恢复旧样式或默认样式,以适合您的应用。
答案 1 :(得分:0)
我想在你的情况下你可以使用方法appearanceWhenContainedIn UIApparence协议。
这将允许每个容器控制UINavigationBar外观。