如何设置NavigationBar的颜色

我们在开发APP的时候,有的时候设计为了让产品混为一体,更加美观,可能会给NavigationBar设置一个颜色.
于是就有人会这样:

 self.navigationController.navigationBar.backgroundColor = [UIColor whiteColor];

最后会发现不是我们想要的结果.
于是有了:

 self.navigationController.navigationBar.barTintColor = [UIColor whiteColor];

发现还不错,.
如果看不出来就设置成红色,就会发现设置出来的颜色,不是真正的红色,是处理过的颜色.

其实比只需要一张图片就可以了,把这张图片设置成背景.
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"图片名"] forBarMetrics:(UIBarMetricsDefault)];

如果说觉得图片还是很麻烦的时候,就可以用系统的方法,绘制一张图片,可以把这个方法,写子啊UIImage的分类里面.
+ (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;
}

然回直接调用,就可以设置背景色了.

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageWithColor:[UIColor RedColor]] forBarMetrics:(UIBarMetricsDefault)];

那么 self.navigationController.navigationBar.barTintColor和[self.navigationController.navigationBar setBackgroundImage这两个方法设置的背景有什么不一样那呢.
barTintColor是xcode7以后的属性.之前的不能用这个方法,设置背景色.

附上两张图片

如何设置NavigationBar的颜色_第1张图片
图1
如何设置NavigationBar的颜色_第2张图片
图2

图一是设置背景色的,图2是设置背景图片的,多少有点区别,不过不影响.在导航栏需要设置背景的时候,如果背景不是纯色的,就可以设置为背景图片.

你可能感兴趣的:(如何设置NavigationBar的颜色)