更改导航栏背景UIColor

时间:2013-08-08 19:56:14

标签: objective-c uinavigationbar

我正在尝试更改导航栏颜色,并使用这个着名的命令来执行此操作:

navController.navigationBar.tintColor = [UIColor colorWithRed:57/255.0 green:50/255.0 blue:36/255.0 alpha:0];

(或alpha:1)

问题是颜色显示为毕业生(顶部边缘为白色,按钮颜色为黑色) - 如何摆脱这种“效果”并使我的颜色均匀

2 个答案:

答案 0 :(得分:0)

要移除渐变,您需要继承UINavigationBar并实施drawRect:以绘制所选颜色。

答案 1 :(得分:0)

如果您不想进行子类化,您可以随时只使用所需的颜色制作1x1图像,并将其设置为条形图的背景图像:

UIImage *image = [self imageWithColor:[UIColor redColor]];
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];


- (UIImage *)imageWithColor:(UIColor *)color {
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return image;
}

Source for imageWithColor: