我的程序中遇到了一个奇怪的错误 - 在模拟器上一切正常,但是当我在实际设备上运行我的应用程序时,我的 UINavigationBar的 tintColor 对于红色,绿色和蓝色通道,em>最大值为.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的颜色改为白色这样的事情需要花费很长时间,所以任何帮助或指针都会受到赞赏,这真是令人沮丧。谢谢!
答案 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;