方法一
@implementation UINavigationBar (UINavigationBarCategory) - (void)drawRect:(CGRect)rect { //加入旋转坐标系代码 // Drawing code UIImage *navBarImage = [UIImage imageNamed:@"navibar.png"]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, 0.0, self.frame.size.height); CGContextScaleCTM(context, 1.0, -1.0); CGPoint center=self.center; CGImageRef cgImage= CGImageCreateWithImageInRect(navBarImage.CGImage, CGRectMake(0, 0, 1, 44)); CGContextDrawImage(context, CGRectMake(center.x-160-80, 0, 80, self.frame.size.height), cgImage); CGContextDrawImage(context, CGRectMake(center.x-160, 0, 320, self.frame.size.height), navBarImage.CGImage); CGContextDrawImage(context, CGRectMake(center.x+160, 0, 80, self.frame.size.height), cgImage);CGImageRelease(cgImage); } @end
方法二
UINavigationController *navi =。。。。 UIImage *image = [UIImage imageNamed:@"navibar.jpg"]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; [navi.navigationBar addSubview:imageView]; [navi.navigationBar sendSubviewToBack:imageView]; [imageView release];
ios 5
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000 if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){ CLog(@"111"); [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navi.png"] forBarMetrics:UIBarMetricsDefault]; } #endif
方法三,没成功
+ (UIColor *)colorWithPatternImage:(UIImage *)image; //也就是说其实UIColor可以表示的不仅仅是纯色,也可以是一张图片 UIImage *navBarImage = [UIImage imageNamed:@"LOGO_320×44.png"]; UIColor *backgroundColor = [UIColor colorWithPatternImage: navBarImage];//因为是pattern的缘故,所以最好提供和bar一样大小的图片。 UINavigationBar.backgroundColor = backgroundColor;