是否可以使用 UINavigationBar 外观为不同的控制器配置不同的栏背景颜色?

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

我有一个像这样的导航堆栈:TabBarController -> NavigationController->ControllerA-> ControllerB。

ControllerA和ControllerB被推送到NavigationController中。 我希望ControllerA的navigationBar的backgroundColor是RED,ControllerB的navigationBar的backgroundColor是GREEN

我已经尝试过外观WhenContainedInInstancesOfClasses。但因为该栏属于NavigationController。它位于层次结构中的 ControllerA 和 ControllerB 之上。所以这个外观WhenContainedInInstancesOfClasses似乎不能工作。

有没有办法让这个与 UINavigationBar 外观一起工作?

ios uikit uinavigationcontroller uinavigationbar uiappearance
1个回答
0
投票

我会让每个视图控制器负责在其

viewWillAppear
方法中设置导航栏的颜色。这可确保导航栏根据视图中的视图控制器具有适当的颜色。

不要使用

appearance...
方法,而是直接在特定导航栏上设置颜色。每个视图控制器都可以通过以下方式访问导航栏:

self.navigationController?.navigationBar

如果您希望让其他类控制颜色,您可以将该类设置为导航控制器的

delegate
并实现
navigationController(_:willShow:animated:)
委托方法。根据将显示的控制器设置导航栏颜色。

© www.soinside.com 2019 - 2024. All rights reserved.