我想更改导航栏颜色的颜色,但我不确定是否应该更改色调或背景。我知道 iOS 7 将采用更扁平化的设计(甚至 recommending removing gradients),但我在解读这两者时遇到了麻烦。即使我设置了背景颜色,它也不会做任何事情。
在此图像中,背景设置为绿色,但条仍为蓝色:
https://i.stack.imgur.com/IwIoZ.png
iOS 7.0 中条形的 tintColor 行为已更改。它不再影响栏的背景,其行为与添加到 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
或调用 {1 的“自定义条形外观”下列出的一些其他方法}(如 setBackgroundImage:forBarMetrics:
)。
请注意,tintColor
属性在 iOS 7 中的工作方式不同,因此,如果您希望 iOS 7 和之前版本之间的外观保持一致,则最好使用背景图像。还值得一提的是,您无法在 Storyboard 中配置背景图像,您必须为您的 UINavigationBar
创建一个 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;
}
}
[[UINavigationBar appearance] respondsToSelector:@selector(barTintColor)]
带有版本检查的完整代码。
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
,则会影响导航栏的项目,例如按钮。
仅供参考,您想保留 iOS 6 样式栏,使背景图像看起来像以前的样式并设置它。
有关更多详细信息,您可以从以下链接获取更多信息:
在 iOS7 中,如果您的导航控制器包含在选项卡栏、拆分视图或其他容器中,则要全局更改导航栏外观,请使用以下方法::
[[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];
//以红色为例。