.h::::
#import
@interface MTNavigationBar : UINavigationBar
{
UIImageView *bg;
}
-(void)setBackgroundImage:(UIImage*)image;
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
@end
.m::::
#import "MTNavigationBar.h"
@implementation MTNavigationBar
-(void)setBackgroundImage:(UIImage*)image {
if(image == nil) return;
bg = [[UIImageView alloc]initWithImage:image];
bg.frame = CGRectMake(0.f, 0.f, self.frame.size.width, self.frame.size.height);
[self addSubview:bg];
[self sendSubviewToBack:bg];
[bg release];
}
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index
{
[super insertSubview:view atIndex:index];
[self sendSubviewToBack:bg];
}
@end
In your own VC:
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UINavigationBar* bar = self.navigationController.navigationBar;
[bar setBackgroundImage:[UIImage imageNamed:@"nav_top.png"] withTag:9999];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController.navigationBar resetBackground:9999];
}
上面的吊办法不行啊
还是用下面这样直接绘制吧
@interface UINavigationBar(clm)
-(void)drawRect:(CGRect)rect;
@end
@implementation UINavigationBar(clm)
-(void)drawRect:(CGRect)rect
{
UIImage *image = [UIImage imageNamed:@"3.png"];
[image drawInRect:rect];
}
加在.h文件里面就可以了