以编程方式更改标签栏和导航栏的颜色

Posted

技术标签:

【中文标题】以编程方式更改标签栏和导航栏的颜色【英文标题】:Change the color of tabbar and navigation bar programmatically 【发布时间】:2011-12-25 17:57:25 【问题描述】:

UITabBarController 的默认颜色为黑色,UINavigationController 的默认颜色为蓝色。我需要将此颜色更改为其他颜色。如何以编程方式执行此操作?

我想我找到了如何更改导航栏颜色但我不明白代码 [navBorder setBackgroundColor:[UIColor colorWithWhite:200.0f/255.f alpha:0.8f]];

我不明白colorWithWhite 是做什么的?

无论如何我如何为UITabBarController 添加颜色?

【问题讨论】:

【参考方案1】:

要在 ios 5 中更改颜色,请设置 UITabBarController 的 tabBartintColor。这是我这样做的一个例子:

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/ch19p533tabBarController/p464p475tabBarController/AppDelegate.m

(您可以下载该项目并亲自尝试。)

colorWithWhite:alpha: 是设置灰色的快捷方式,可能带有透明度。

【讨论】:

是的,@MichaelDautermann,注意 iOS 5 中出现的一些非常花哨和怪异的界面。你可以为所有内容着色!【参考方案2】:

要以编程方式更改UITabBar 的颜色,您可以使用tintcolor 属性,以下代码行将帮助您解决

self.navigationController.navigationBar.tintColor= [UIColor redColor];

更改标签栏颜色

tabBar.tintColor = [UIColor greenColor];

【讨论】:

【参考方案3】:

iOS 5 中有一个外观代理

UIAppearance.h class

@Protocol UIAppearance <NSObject>
+(id) appearance ;
+(id) appearanceWhenContainedIn:(Class <UIAppearanceContainer> containerClass,..)
...

@end

#define UI_APPEARANCE_SELECTOR

这将帮助您根据需要更改控件的外观... 您还可以观看 WWDC 2011 会议视频的“自定义 UIKit 控件的外观”了解更多信息。

例子:-

[[UINavigationBar appeareance] setBackGroundImage:[UIImage imageNamed:@"navBackground"] forBarMetrics:UIBarMetricsDefault];

它将导航栏图像更改为应用程序资源文件夹中的navBackground图像,并将导航栏指标设置为默认值。

[[UIButton ButtonWhenContainedIn:[CustomViewController Class],[UINavigationController Class],nil] setTitleColor:[UIColor redColor] forControlState:UIControlStateNormal];

当包含在此层次结构中时,它将设置按钮的标题颜色为红色。

【讨论】:

以上是关于以编程方式更改标签栏和导航栏的颜色的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式快速更改导航栏的高度

为啥ios中的状态栏和导航栏背景颜色不同

iOS 7 中 UIActivityViewControllers 的模态状态栏和导航栏文本颜色

xib 中的自动布局 - 子视图的高度与导航栏和标签栏之间的空间成正比

状态栏和导航栏的颜色不同,但实际上它们应该相同

Xcode 13 - swift OS 15 中的导航栏和状态栏文本颜色变化