如何更改iOS 7或6中的导航栏颜色?

我想更改导航栏颜色的颜色,但是我不确定是否应该更改颜色或背景。 我知道iOS 7是一个更平坦的devise(甚至build议删除渐变 ),但我无法破译这两个。 即使我设置了背景颜色,它也不会做任何事情。

在这个图像中,背景被设置为绿色,但是酒吧仍然是蓝色的:

在这里输入图像说明

tintColor for bars的行为在iOS 7.0上发生了变化。 它不再影响酒吧的背景和行为描述添加到UIView的tintColor属性。 要着色酒吧的背景,请使用-barTintColor。

navController.navigationBar.barTintColor = [UIColor navigationColor];

如果您想在iOS 6中使用类似于iOS 7的导航栏的纯色,请使用以下命令:

 [[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault]; [[UINavigationBar appearance] setBackgroundColor:[UIColor greenColor]]; 

iOS 7中使用像这样的barTintColor

 navigationController.navigationBar.barTintColor = [UIColor greenColor]; 

要么

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

//在ios 7中: –

 [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]]; 

//在ios 6中: –

 [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]]; 

UINavigationBar上忽略背景颜色属性,所以如果你想调整外观,你必须使用tintColor或者调用UINavigationBar类引用的 “自定义酒吧外观”下列出的其他一些方法(如setBackgroundImage:forBarMetrics:

请注意, tintColor属性在iOS 7中的工作方式不同,因此如果您希望在iOS 7和使用背景图像的先前版本之间保持一致的外观,可能是您的最佳select。 另外值得一提的是,你不能在Storyboard中configuration背景图片,你必须为你的UINavigationBar创build一个IBOutlet ,并在viewDidLoad或者其他合适的地方改变它。

还有一件事,如果你想在UIPopover中改变导航颜色,你需要设置barStyleUIBarStyleBlack

 if([UINavigationBar instancesRespondToSelector:@selector(barTintColor)]){ //iOS7 navigationController.navigationBar.barStyle = UIBarStyleBlack; navigationController.navigationBar.barTintColor = [UIColor redColor]; } 

以下是如何正确设置iOS 6和7。

 + (void)fixNavBarColor:(UINavigationBar*)bar { if (iosVersion >= 7) { bar.barTintColor = [UIColor redColor]; bar.translucent = NO; }else { bar.tintColor = [UIColor redColor]; bar.opaque = YES; } } 

完整的代码与版本检查。

  if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1) { // do stuff for iOS 7 and newer [self.navigationController.navigationBar setBarTintColor:[UIColor yellowColor]]; } else { // do stuff for older versions than iOS 7 [self.navigationController.navigationBar setTintColor:[UIColor yellowColor]]; } 

您可以检查iOS版本,并简单地设置导航栏的色调颜色。

 if (SYSTEM_VERSION_LESS_THAN(@"7.0")) { self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0]; }else{ self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.9529 green:0.4392 blue:0.3333 alpha:1.0]; self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor]; [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; } 

根据张贴回答,这对我工作:

 /* check for iOS 6 or 7 */ if ([[self navigationController].navigationBar respondsToSelector:@selector(setBarTintColor:)]) { [[self navigationController].navigationBar setBarTintColor:[UIColor whiteColor]]; } else { /* Set background and foreground */ [[self navigationController].navigationBar setTintColor:[UIColor whiteColor]]; [self navigationController].navigationBar.titleTextAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[UIColor blackColor],UITextAttributeTextColor,nil]; } 
  you can add bellow code in appdelegate.m .if your app is navigation based // for background color [nav.navigationBar setBarTintColor:[UIColor blueColor]]; // for change navigation title and button color [[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"FontNAme" size:20], NSFontAttributeName, nil]]; [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; 

将下面的代码插入到AppDelegate.m的didFinishLaunchingWithOptions()中

 [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:26.0/255.0 green:184.0/255.0 blue:110.0/255.0 alpha:1.0]]; 

我正在使用以下代码(在C#中)来更改NavigationBar的颜色:

 NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.Default); NavigationController.NavigationBar.SetBackgroundImage (new UIImage (), UIBarMetrics.LandscapePhone); NavigationController.NavigationBar.BackgroundColor = UIColor.Green; 

诀窍是你需要摆脱默认的背景图像,然后颜色会出现。

如果要更改导航栏的颜色,请使用它的barTintColor属性。 另外,如果你将任何颜色设置为tintColor ,它会影响到导航栏的项目,如button。

仅供参考,您要保留iOS 6样式栏,使背景图像看起来像以前的样式,并设置它。

有关更多详细信息,可以从以下链接获取更多信息:

https://developer.apple.com/library/ios/documentation/userexperience/conceptual/TransitionGuide/AppearanceCustomization.html

在iOS7中,如果您的导航控制器包含在标签栏,splitview或其他容器中,那么对于全局更改导航栏外观,请使用以下方法::

 [[UINavigationBar appearanceWhenContainedIn:[UITabBarController class],nil] setBarTintColor:[UIColor blueColor]]; 

在你的ViewController.m- (void)viewDidLoad中尝试下面的代码

[[[self navigationController] navigationBar] setTintColor:[UIColor yellowColor]];

这在iOS 6中为我工作..试试吧..

我不知道要改变色调与背景颜色,但这是你如何改变导航栏的色调颜色:

试试这个代码

[navigationController.navigationBar setTintColor:[UIColor redColor]; //以红色为例。