iOS UINavigationBar色彩颜色比颜色集显得更暗

我正在为特定的导航控制器设置自定义外观:

//Set Cutom Nav Bar Appearance [[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBackgroundImage: nil forBarMetrics: UIBarMetricsDefault]; [[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBarTintColor: self.tableView.backgroundColor]; 

当显示导航控制器时,预期的颜色是RGB(247,247,247) – 我已经仔细检查过的也是当设置该值时tableView.background颜色的值 – 但它在屏幕上显示为RGB(227 ,227,227)。 UINavigationBar外观代理的不同属性可以改变屏幕上显示的颜色吗?

谢谢!

编辑:

此外,如果我直接使用所需的颜色设置barTintColor,屏幕上显示的barTintColor仍比预期的要暗:

 UIColor* navBarBackgroundColor = [UIColor colorWithRed: (247.0 / 255.0) green: (247.0 / 255.0) blue: (247.0 / 255.0) alpha: 1]; //Set Cutom Nav Bar Appearance [[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBackgroundImage: nil forBarMetrics: UIBarMetricsDefault]; [[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBarTintColor: navBarBackgroundColor]; 

这是从@马特的答案派生的解决scheme代码。 希望能帮助别人

 CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetFillColorWithColor(context, [self.tableView.backgroundColor CGColor]); CGContextFillRect(context, rect); UIImage *navBarImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); //Set Cutom Nav Bar Appearance [[UINavigationBar appearanceWhenContainedIn:[MyNavigationControllerClass class], nil] setBackgroundImage: navBarImage forBarMetrics: UIBarMetricsDefault]; 

准确设置导航栏颜色的方法与您所做的完全相反。 你给它一个色调,没有背景图像。 相反,给它一个由所需颜色的矩形组成的背景图像 – 没有色调的颜色。

还将其translucent设置为NO。