更改导航栏ios6和ios7的颜色

Posted

技术标签:

【中文标题】更改导航栏ios6和ios7的颜色【英文标题】:Change color of navigation bar ios6 and ios7 【发布时间】:2014-01-04 12:23:44 【问题描述】:

我正在将我的应用升级到 ios7。但是我也想保留 iOS6 界面。除了导航栏外,它运行良好。在 iOS7 中,它们看起来很棒(只是默认颜色的 translucent 属性为 YES。在 iOS6 中,导航栏显示为默认的蓝色条,我希望它们是黑色半透明的。

我要做的是检查 iOS 的版本,然后执行一些代码。在调试器中,我在 vComp 变量中看到了正确的版本,但颜色没有改变。不要介意 redColor 属性,这只是为了测试。在这两种方式中,我都会看到默认颜色。

这是我的代码:

- (void) fixNavBarColor:(UINavigationBar*)bar 
    NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."];
    if ([[vComp objectAtIndex:0] intValue] >= 7) 
        bar.barTintColor = [UIColor redColor];
        bar.translucent = NO;
    
    else 
        bar.tintColor = [UIColor redColor];
        bar.opaque = YES;
    

没有错误或警告。 有什么想法吗?

【问题讨论】:

你的问题是ios6不能把bar改成黑色半透明吗? 首先我会摆脱 NSArray *vComp = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; 并将 [[vComp objectAtIndex:0] intValue] >= 7 替换为 [[[UIDevice currentDevice] systemVersion] >= 7[[[UIDevice currentDevice] systemVersion] intValue] 将返回值为 67 或等不需要做毫无意义的componentsSeparatedByString: 电话 谢谢,下面的解决方案效果很好。所以,解决了。 【参考方案1】:

您不应该将 tintColor 直接设置为 navigationBar,因为它不会应用于您应用的其他部分,您应该使用 UINavigationBar 的外观来设置 tintColor,它在 iOS 5.0 及更高版本上可用。

    [[UINavigationBar appearance] setTintColor:"Your Color"];

【讨论】:

效果很好。我用相同的技术设置了文本颜色和标签颜色。谢谢【参考方案2】:

将此代码用于 iOS6

 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor colorWithWhite:0 alpha:.8]]
                                                  forBarMetrics:UIBarMetricsDefault];

【讨论】:

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

自定义iOS7导航栏背景,标题和返回按钮文字颜色

导航栏标题颜色在 iOS7 中自行更改

如何在 iOS 7 中设置导航栏的色调颜色

转自定义iOS7导航栏背景,标题和返回按钮文字颜色 -- 不错不错!!

更改导航栏的按钮颜色

使用他们尊敬的 iOS 6 或 iOS7 版本创建导航栏