UINavigationBar backgroundColor 不适用于 UITabBar

Posted

技术标签:

【中文标题】UINavigationBar backgroundColor 不适用于 UITabBar【英文标题】:UINavigationBar backgroundColor not working with UITabBar 【发布时间】:2016-10-13 10:53:03 【问题描述】:

我正在使用 UINavigationController 并在 didFinishLaunching... 中设置背景颜色:

self.navController.backgroundColor = UIColor.green

它在第一个视图控制器中运行良好,如第一张图片所示。在第二个视图控制器中(只是使用按钮中的 segue 推动)我有一个 UITabBar(没有 UITabBarController)并且背景颜色不起作用。如果我删除 UITabBar 它可以工作。

Correct navigation bar background color

Wrong navigation bar background color

该项目不包含任何其他代码。如果我使用 barTintColor 而不是 backgroundColor,它会起作用,但我认为这看起来不太好。

有人知道我该如何解决这个问题吗?

【问题讨论】:

请用您用于更改 bartintcolor 的代码更新您的问题 【参考方案1】:

您必须为导航栏的背景颜色设置属性 TintColor

在 Objective-c 中

[[UINavigationBar appearance] setTintColor:[UIColor greenColor]];

迅速 navigationController.navigationBar.barTintColor = UIColor.greenColor()

【讨论】:

【参考方案2】:
self.navigationController?.navigationBar.barTintColor = UIColor.GreenColor()

UINavigationBar.appearance().barTintColor = .blackColor()

或者

[navigationController.navigationBar setTitleTextAttributes:@NSForegroundColorAttributeName : [UIColor whiteColor]];

【讨论】:

【参考方案3】:

你可以像这样使用 barTintColor 属性:

self.navigationController?.navigationBar.barTintColor = UIColor.green

【讨论】:

barTintColor 实际上并没有打印正确的颜色,只是一种色调。如何为标签栏设置精确的所需颜色?任何的想法? (我不想使用图像作为背景,因为我想动态设置它) 好吧,你实际上需要设置barTintColorisTranslucent = false ...

以上是关于UINavigationBar backgroundColor 不适用于 UITabBar的主要内容,如果未能解决你的问题,请参考以下文章

由于奇怪的 UINavigationBar 视图层次结构,自定义 UINavigationBar 不起作用

UINavigationBar

UITableView 滚动 UINavigationBar

UINavigationBar 一个有样式的view

UINavigationController改变UINavigationBar导航条标题颜色跟字体

UIBarButton 未在 UINavigationBar 中显示