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

Posted

技术标签:

【中文标题】iOS7 UINavigationBar tintColor 在设置时更改为最大 .8【英文标题】:iOS7 UINavigationBar tintColor changes to max .8 when set 【发布时间】:2014-07-07 05:02:06 【问题描述】:

我在我的程序中遇到了一个奇怪的错误 - 在模拟器上一切正常,但是当我在实际设备上运行我的应用程序时,我的 UINavigationBartintColor em> 红色、绿色和蓝色通道的最大值为 0.8。这是我用来测试的代码的sn-p:

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 第 5 代 (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】:

在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;

【讨论】:

感谢您的快速回复!不过,我实际上并没有尝试设置导航栏的颜色;我正在尝试设置 tintColor 以便我可以更改显示的“返回”按钮(UIBarButtonItem)的文本颜色。您对此有什么建议吗? 只在iOS7以后使用 self.window.tintColor=[UIColor blackColor];它不适用于 iOS6。

以上是关于iOS7 UINavigationBar tintColor 在设置时更改为最大 .8的主要内容,如果未能解决你的问题,请参考以下文章

MKUserTrackingBarButtonItem tint color IOS7 不起作用,但在 IOS 6 上起作用

iOS7:UINavigationBar 与状态栏合并

IOS7 中的 UINavigationBar/状态栏问题

iOS7如何绘制透明的UIToolbar或UINavigationBar

如何在 iOS7 中设置 UINavigationBar? [复制]

IOS7上UINavigationBar下的UIView