我可以通过覆盖drawRect来更改UINavigationController
的背景图像:方法:
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @"navController.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
self.tintColor = [UIColor blueColor];
}
@end
背景是我想要的,也是tintColor
,但是当试图设置UIColor
类中不存在的颜色时,它会失败并显示奇怪的颜色:
@implementation UINavigationBar (UINavigationBarCategory)
- (void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @"navController.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
self.tintColor = [UIColor colorWithRed:(26/255) green:(103/255) blue:(159/255) alpha:1];
}
@end
如何强制UINavigationBar
显示我想要的颜色?
注意:我的导航控制器按钮颜色只有问题,因为背景本身设置为图像。
答案 0 :(得分:10)
你需要这样做:
self.tintColor = [UIColor colorWithRed:(26.0f/255.0f) green:(103.0f/255.0f) blue:(159.0f/255.0f) alpha:1.0f];
否则你正在进行整数运算,你最终可能会得到0。使用浮点运算,您就可以得到所需的值。
答案 1 :(得分:8)
这对我有用
self.navigationController.navigationBar.backgroundColor= [UIColor colorWithRed:57.0/255.0 green:158.0/255 blue:209.0/255 alpha:1.0];