iOS7 UINavigationBar tintColor在设置时更改为最大.8

时间:2014-07-07 05:02:07

标签: iphone ios7 uinavigationbar tintcolor

我的程序中遇到了一个奇怪的错误 - 在模拟器上一切正常,但是当我在实际设备上运行我的应用程序时,我的 UINavigationBar的 tintColor 最大值为.8。以下是我用来测试的代码片段:

UIColor *navcolor = [UIColor colorWithRed:140/255.0 green:193/255.0 blue:227/255.0 alpha:1];

if(IOS7()) {
    hnvc.navigationBar.barTintColor = navcolor;
    hnvc.navigationBar.translucent = NO;

    self.window.tintColor = [UIColor colorWithRed:146/255.0 green:53/255.0 blue:40/255.0 alpha:1.0];

    UIColor *color = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
    hnvc.navigationBar.alpha = 1.0;
    hnvc.navigationBar.opaque = YES;
    hnvc.navigationBar.tintAdjustmentMode = UIViewTintAdjustmentModeNormal;

    hnvc.navigationBar.tintColor = color;

    NSLog(@"%d", hnvc.navigationBar.translucent);
    NSLog(@"%@", color);
    NSLog(@"%@", hnvc.navigationBar.tintColor);

    const CGFloat* components1 = CGColorGetComponents(color.CGColor);
    NSLog(@ "A: %f, R: %f G: %f B: %f", CGColorGetAlpha(color.CGColor), components1[0], components1[1], components1[2]);

    const CGFloat* components = CGColorGetComponents(hnvc.navigationBar.tintColor.CGColor);
    NSLog(@ "A: %f, R: %f G: %f B: %f", CGColorGetAlpha(hnvc.navigationBar.tintColor.CGColor), components[0], components[1], components[2]);

}

正如你所看到的,我测试了很多不同的属性,但它们似乎都没有用。我在模拟器(iPhone 4英寸,iOS 7.1)中运行此应用程序时的输出是:

2014-07-06 21:52:54.096 L'Allegro[16650:60b] 0
2014-07-06 21:52:54.097 L'Allegro[16650:60b] UIDeviceRGBColorSpace 1 1 1 1
2014-07-06 21:52:54.098 L'Allegro[16650:60b] UIDeviceRGBColorSpace 1 1 1 1
2014-07-06 21:52:54.098 L'Allegro[16650:60b] A: 1.000000, R: 1.000000 G: 1.000000 B: 1.000000
2014-07-06 21:52:54.099 L'Allegro[16650:60b] A: 1.000000, R: 1.000000 G: 1.000000 B: 1.000000

但是,当我在iPod touch 5th Gen(iOS 7.0)上运行应用程序时,输出为:

2014-07-06 21:55:09.904 L'Allegro[3620:60b] 0
2014-07-06 21:55:09.908 L'Allegro[3620:60b] UIDeviceRGBColorSpace 1 1 1 1
2014-07-06 21:55:09.910 L'Allegro[3620:60b] UIDeviceRGBColorSpace 0.8 0.8 0.8 1
2014-07-06 21:55:09.912 L'Allegro[3620:60b] A: 1.000000, R: 1.000000 G: 1.000000 B: 1.000000
2014-07-06 21:55:09.914 L'Allegro[3620:60b] A: 1.000000, R: 0.800000 G: 0.800000 B: 0.800000

对于我尝试设置的任何1.0值都是一样的(即如果我使用[UIColor redColor],则红色组件设置为.8而不是1.0)。

结果是,在模拟器中,导航栏上的条形按钮项目显示为白色,但在我的实际设备上以浅灰色显示。

我已经在这里工作了好几个小时,而且将我的UIBarButtonItem的颜色改为白色这样的事情需要花费很长时间,所以任何帮助或指针都会受到赞赏,这真是令人沮丧。谢谢!

1 个答案:

答案 0 :(得分:0)

在iOS7中支持当前iOS版本的导航栏颜色

[[UINavigationBar appearance]setBarTintColor:[UIColor colorWithRed:231.0/255.f green:231.0/255.f blue:231.0/255.f alpha:1]]; 

用于导航控制器的颜色设置。

但在该控制器上设置完美的条形颜色,因此您必须在viewdidLoad上设置

self.navigationController.navigationBar.translucent=NO;