是否可以更改 UINavigationController 中特定视图控制器的导航栏背景颜色?

问题描述 投票:0回答:1

我有一个像这样的 UINavigationController 堆栈:

UINavigationController -> RootViewController-> OtherControllers->...

我想要 UINavigationBar 背景颜色

    当 RootViewController 显示时
  • 设置为红色 (UINavigationController 堆栈的最顶层).
  • 当非RootViewController显示时
  • 设置为绿色 在 UINavigationController 中。

有什么好的方法可以完成此类工作(除了为每个控制器手动设置条形色调颜色之外)?

ios uinavigationcontroller uinavigationbar
1个回答
0
投票

感谢@matt的回答。 UINavigationBarAppearance 可以为特定控制器完成这种更改栏外观的工作

但是一开始,我的代码在按照官方指南执行后无法工作: enter image description here

本指南似乎具有某种误导性。 您无法将自定义外观设置为导航控制器本身。 您必须将其设置为 navigaitonItem

现在可以使用了:

UINavigationBarAppearance* appear = [UINavigationBarAppearance new];
[appear setBackgroundColor:[UIColor redColor]];

//    self.navigationController.navigationBar.scrollEdgeAppearance = appear;
//    self.navigationController.navigationBar.compactAppearance = appear;
//    self.navigationController.navigationBar.standardAppearance = appear;
//    self.navigationController.navigationBar.compactScrollEdgeAppearance = appear;
    self.navigationItem.scrollEdgeAppearance = appear;
    self.navigationItem.compactAppearance = appear;
    self.navigationItem.standardAppearance = appear;
© www.soinside.com 2019 - 2024. All rights reserved.