将NavigationBar背景设置为纯色

Mar*_*nHN 10 uinavigationbar ios

有什么办法可以将导航栏的背景设置UINavigationController成纯色吗?

我知道我可以改变Tint颜色,但这仍然留给我渐变/玻璃效果.

我可以用任何方式摆脱它,只是有一个简单的旧纯色?

小智 47

以下代码还会导致导航栏的纯色:

[[UINavigationBar appearance] setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundColor:[UIColor redColor]];
Run Code Online (Sandbox Code Playgroud)

  • 一定要设置色调颜色或导航栏上的按钮不会得到颜色:[[UINavigationBar外观] setTintColor:[UIColor redColor]]; (2认同)

Jon*_*uin 5

我认为你必须继承UINavigationBar并覆盖-(void)drawRect:(CGRect)rect:

UIColor *colorFlat = /* any UIColor*/
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [colorFlat CGColor]);
CGContextFillRect(context, rect);
Run Code Online (Sandbox Code Playgroud)

  • 覆盖drawRect会导致iOS7出现问题; 它变成44像素,并留下一个空状态 (3认同)