最近我突然发现UINavigationbar背景修改的方法不起作用了,代码如下:
1 2 3 4 5 6 7 8 9 | @implementation UINavigationBar (CustomImage) -(void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed:@"navigationbar.png"]; [image drawInRect:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)]; } @end |
发现原来是iOS 5的原因,如果运行在iOS 5以下的版本就没有问题了。经过实验以下方法适合iOS 5(放在ViewDidLoad中):
1 2 3 | if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){ [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; } |
第一条if语句的作用是防止程序在iOS 5以下的版本中崩溃。
这样,依靠这两段代码,我的UINavigationbar的背景问题在iOS 5及以下版本中得到了完美的解决。






