如何更改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中改变导航颜色,你需要设置barStyle
为UIBarStyleBlack
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样式栏,使背景图像看起来像以前的样式,并设置它。
有关更多详细信息,可以从以下链接获取更多信息:
在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];
//以红色为例。