第一种:直接在你的UIViewController中设置
//颜色设置,采用RGB格式
UIColor *bgcolor = [UIColorcolorWithRed:255.0f/255.0f green:0.0f/255.0f blue:0.0f/255.0f alpha:1.0f];
self.navigationController.navigationBar.tintColor = bicolor;
//设置navigationBar的背景图片
UIImage *navBarImage = [UIImageimageNamed:@"banner1.jpg"];
navigationbaritembackgroundView=[[UIImageViewalloc] initWithImage:navBarImage];
[self.navigationController.navigationBarinsertSubview:navigationbaritembackgroundViewatIndex:1];//将背景图片设置在你想要的atIndex处
[self.navigationController.navigationBar adduSubview:navigationbaritembackgroundView];//这条指令将会让背景图片出现在最顶层,如果你开始在navigationBar设置得有其它的ui控件的话,它们将会被覆盖隐藏掉;
上面的图片是直接加进去的,无法调整图片的大小,那么你的图片最好先制作为适合你预期的效果样式
第二种:扩展UINavigationBar
这里我先给链接,http://wsqwsq000.iteye.com/blog/1145172
这个我认为说得是最清楚的
what?不知道怎么扩展,那么看下面
选中UINavigationBar,然后命名你想要的名称
添加完成后,出现两个文件
后然在这个类中进行添加函数,后面的看那个链接
综合了网上其它一些方法,有些没测试出效果
#import
@interface UINavigationBar (CustomImage)
- (void)setBackgroundImage:(UIImage*)image;
@end
#import "UINavigationBar+CustomImage.h"
UIImageView *backgroundView;
@implementation UINavigationBar (CustomImage)
- (void)setBackgroundImage:(UIImage*)image
{
if(image == nil)
{
UIColor *bgcolor = [UIColor colorWithRed:46.0f/255.0f green:87.0f/255.0f blue:29.0f/255.0f alpha:1.0f];
self.tintColor = bgcolor;
[backgroundView removeFromSuperview];
}
else
{
backgroundView = [[UIImageView alloc] initWithImage:image];
//backgroundView.tag = 1;
backgroundView.frame = CGRectMake(0.f, 0.f, self.frame.size.width, self.frame.size.height);
backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self insertSubview:backgroundView atIndex:1];//这条指令atIndex:1达到了预期的效果
[backgroundView release];
}
}
/*
- (void)drawRect:(BOOL)color {
//颜色填充
if(color==YES )
{
UIColor *bgcolor = [UIColor colorWithRed:46.0f/255.0f green:87.0f/255.0f blue:29.0f/255.0f alpha:1.0f];
self.tintColor = bgcolor;
return;
}
UIImageView *backgroundView;
UIImage *navBarImage = [UIImage imageNamed:@"banner1.jpg"];
backgroundView = [[UIImageView alloc] initWithImage:navBarImage];
[self insertSubview:backgroundView atIndex:1];//这条指令atIndex:1达到了预期的效果
[backgroundView release];
/*
//第一种:颜色填充
UIColor *color = [UIColor blueColor];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents( [color CGColor]));
CGContextFillRect(context, rect);
self.tintColor = color;
*/
//第二种:图片填充
/*
UIImage *img = [UIImage imageNamed: @"net.png"];
[img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
*/
/*第三种:
UIImage *img = [UIImage imageNamed: @"net.png"];
CGPoint point = {0,0};
[img drawAtPoint:point];
*/
//[self addSubview:backgroundView]; 这条指令addSubview:会让背景图显示在最前面,覆盖掉工程里的搜索按钮
//[self sendSubviewToBack:backgroundView];这条指令加上在这个工程里背景图就无法显示了
//第四种:加入旋转坐标系代码
// Drawing code
/*
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);
}
*/
@end