更改导航栏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]
将返回值为 6
或 7
或等不需要做毫无意义的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的颜色的主要内容,如果未能解决你的问题,请参考以下文章