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