iOS7 UINavigationBar tintColor 在设置时更改为最大 .8
Posted
技术标签:
【中文标题】iOS7 UINavigationBar tintColor 在设置时更改为最大 .8【英文标题】:iOS7 UINavigationBar tintColor changes to max .8 when set 【发布时间】:2014-07-07 05:02:06 【问题描述】:我在我的程序中遇到了一个奇怪的错误 - 在模拟器上一切正常,但是当我在实际设备上运行我的应用程序时,我的 UINavigationBar 的 tintColor 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如何绘制透明的UIToolbar或UINavigationBar