【问题标题】:Change color of navigation bar ios6 and ios7更改导航栏ios6和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: 电话
  • 谢谢,下面的解决方案效果很好。所以,解决了。

标签: ios iphone objective-c uinavigationbar


【解决方案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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-13
    • 1970-01-01
    • 2014-05-11
    • 2018-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多