更改导航栏ios6和ios7的颜色

更改导航栏ios6和ios7的颜色,ios,iphone,objective-c,uinavigationbar,Ios,Iphone,Objective C,Uinavigationbar,我正在将我的应用程序升级到iOS7。但是,我也想保留iOS6接口。除了导航栏外,它工作正常。在iOS7中,它们看起来很棒(只是默认颜色,半透明属性为YES。在iOS6中,导航栏显示为默认的蓝色栏,我希望它们是黑色半透明的 我要做的是检查iOS的版本,然后执行一些代码。在调试器中,我在vComp变量中看到了正确的版本,但颜色没有改变。不要介意redColor属性,这只是为了测试。在这两种情况下,我都会看到默认颜色 这是我的密码: - (void) fixNavBarColor:(UINavigat

我正在将我的应用程序升级到iOS7。但是,我也想保留iOS6接口。除了导航栏外,它工作正常。在iOS7中,它们看起来很棒(只是默认颜色,半透明属性为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

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

您不应该直接将tintColor设置为navigationBar,因为它不会应用于应用程序的其他部分,您应该使用UINavigationBar的外观来设置tintColor,这在iOS 5.0以后的版本中可用

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

您的问题是无法在ios6中将条形图更改为黑色半透明吗?首先,我将去掉
NSArray*vComp=[[UIDevice currentDevice].systemVersion组件,并将
[[vComp objectAtIndex:0]intValue]>=7
替换为
[[UIDevice currentDevice]systemVersion]>=7
[[UIDevice currentDevice]systemVersion]intValue]
将返回值为
6
7
或诸如此类,无需执行无意义的
组件通过字符串分离:
callThanx,下面的解决方案非常有效。因此,解决了。非常有效。我已使用相同的技术设置文本颜色和标签颜色。谢谢