我知道如何通过执行
来更改UINavigationBar
背景图片
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nabbar"] forBarMetrics:UIBarMetricsDefault];
我知道如何在每个Views
内将条形设置为不同的颜色.....现在我想将背景颜色更改为不使用图像来实现纯色app delegate
。我不想每次从每个视图设置它,我不想写CGRect
。
我尝试了[[UINavigationBar appearance] setBackgroundColor:[UIColor colorWithRed:33/255.0 green:34/255.0 blue:36/255.0 alpha:1.0]];
,但我无法工作,我无法找到适用于app委托的任何地方的代码。
有人可以指出我正确的方向吗?
答案 0 :(得分:194)
您可以使用[[UINavigationBar appearance] setTintColor:myColor];
自iOS 7起,您需要设置[[UINavigationBar appearance] setBarTintColor:myColor];
和[[UINavigationBar appearance] setTranslucent:NO]
。
[[UINavigationBar appearance] setBarTintColor:myColor];
[[UINavigationBar appearance] setTranslucent:NO];
答案 1 :(得分:100)
要更改背景颜色而不是色调,以下代码将起作用:
[self.navigationController.navigationBar setBarTintColor:[UIColor greenColor]];
[self.navigationController.navigationBar setTranslucent:NO];
答案 2 :(得分:17)
在iOS 7中执行此操作:
[[UINavigationBar appearance] setBarTintColor:myColor];
答案 3 :(得分:13)
Swift语法:
UINavigationBar.appearance().barTintColor = UIColor.whiteColor() //changes the Bar Tint Color
我只是把它放在AppDelegate的didFinishLaunchingWithOptions中,它在整个应用程序中都存在
答案 4 :(得分:6)
您可以使用Xcode 6.3.1轻松完成此操作。在文档大纲中选择您的NavigationBar。选择“属性”检查器。取消选中半透明。将Bar Tint设置为所需的颜色。完成!
答案 5 :(得分:5)
<强>夫特强>:
self.navigationController?.navigationBar.barTintColor = UIColor.red
self.navigationController?.navigationBar.isTranslucent = false
答案 6 :(得分:3)
正如其他答案所提到的,你可以使用setTintColor:
,但你想要一个纯色,并且不可能设置色彩颜色AFAIK。
解决方案是以编程方式创建图像,并通过UIAppearance
将该图像设置为所有导航栏的背景图像。关于图像的大小,我不确定1x1像素图像是否可行或者您是否需要导航栏的确切大小。检查this question的第二个答案以了解如何创建图像。< / p>
作为一个建议,我不喜欢用这些类型的东西“重载”应用程序委托。我倾向于创建一个名为AppearanceConfiguration
的类,只有一个公共方法configureAppearance
,我在其中设置了我想要的所有UIAppearance,然后我从app delegate调用该方法。
答案 7 :(得分:2)
您可以在任何视图控制器中使用此代码设置UINavigation背景颜色
self.navigationController.navigationBar.backgroundColor = [UIColor colorWithRed:10.0f/255.0f green:30.0f/255.0f blue:200.0f/255.0f alpha:1.0f];
答案 8 :(得分:1)
iOS 13.0 为此引入了新的 API:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let myColor = UIColor(hue: 0.4, saturation: 0.25, brightness: 1, alpha: 1)
let barAppearance = UINavigationBarAppearance()
barAppearance.backgroundColor = myColor
let navigationBar = UINavigationBar.appearance()
navigationBar.standardAppearance = barAppearance
navigationBar.scrollEdgeAppearance = barAppearance // for scrollable content or large titles
return true
}
答案 9 :(得分:0)
在Swift 4.2和Xcode 10.1中
您可以将导航栏的颜色从AppDelegate直接更改为整个项目。
在didFinishLaunchingWithOptions launchOptions:
中,在下面的代码行中写下
UINavigationBar.appearance().tintColor = UIColor.white
UINavigationBar.appearance().barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
这里
tintColor 用于设置背景图像,例如后退按钮和菜单行图像等。(请参见下面的左右菜单图像)
barTintColor 用于导航栏背景颜色
如果您要设置特定的视图控制器导航栏颜色,请在viewDidLoad()
//Add navigation bar colour
navigationController?.navigationBar.barTintColor = UIColor(red: 2/255, green: 96/255, blue: 130/255, alpha: 1.0)
navigationController?.navigationBar.tintColor = UIColor.white
答案 10 :(得分:-1)
颜色代码是这里的问题。而不是使用195/255,使用0.7647或195.f / 255.f问题是转换浮动不能正常工作。尝试使用精确浮点值。