UIToolBar,UINavigationBar 修改背景色
UIToolBar 三种办法
方法一
[[UIDevice currentDevice] systemVersion];
if ([[[UIDevice currentDevice] systemVersion] floatValue] > 4.9) {
// iOS 5
UIImage *toolBarIMG = [UIImage imageNamed: @" toolBar_brown.png "];
if ([toolBar respondsToSelector:@selector(setBackgroundImage:forToolbarPosition:barMetrics:)]) {
[toolBar setBackgroundImage:toolBarIMG forToolbarPosition: 0 barMetrics: 0];
}
} else {
// iOS 4
[toolBar insertSubview:[[[UIImageView alloc] initWithImage:[UIImage imageNamed: @" toolBar_brown.png "]] autorelease] atIndex: 0];
}
方法二
// MyToolBar.h
@interface MyToolBar : UIToolbar {
}
@end
// MyToolBar.m
#import " MyToolBar.h "
@implementation MyToolBar
- ( void)drawRect:(CGRect)rect {
CGContextRef c = UIGraphicsGetCurrentContext();
UIImage *image = [UIImage imageNamed: @" fish.png "];
CGContextDrawImage(c, rect, image.CGImage);
}
@end
方法三
{
UIImage *img = [[[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource: @" ToolbarBk " ofType: @" png "]] autorelease];
[img drawInRect:CGRectMake( 0, 0, self.frame.size.width, self.frame.size.height)];
}
UINavigationBar
在APPDelegate添加
- ( void)drawRect:(CGRect)rect {
UIImage *img = [UIImage imageNamed: @" navbar.png "];
[img drawInRect:rect];
}
@end
if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
}
iOS5.0以前的程序可以重载UINavigationBar的drawRect函数 @implementation UINavigationBar (CustomImage) - (void)drawRect:(CGRect)rect { UIImage *image = [UIImage imageNamed: @\\\\\\\"cm_nav_bg.png\\\\\\\"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; } @end IOS5.0之后系统提供了api直接设置背景,重载drawRect没有用了,最好是把两种方法都用上 if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@\\\\\\\"cm_nav_bg.png\\\\\\\"] forBarMetrics:UIBarMetricsDefault]; } PS:背景图片用1像素宽的渐变图片可以实现从上到下的渐变效果