自定义 UINavigationBar
1 //CustomNavigationBar.h 2 @interface UINavigationBar (UINavigationBarCategory) 3 UIImageView *backgroundView; 4 - (void)setBackgroundImage:(UIImage*)image; 5 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index; 6 @end 7 //CustomNavigationBar.m 8 @implementation UINavigationBar (UINavigationBarCategory) 9 -(void)setBackgroundImage:(UIImage*)image 10 { if(image == nil) 11 { [backgroundView removeFromSuperview]; } 12 else { backgroundView = [[UIImageView alloc] initWithImage:image]; 13 backgroundView.tag = 1; 14 backgroundView.frame = CGRectMake(0.f, 0.f, self.frame.size.width, self.frame.size.height); 15 backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; [self addSubview:backgroundView]; 16 [self sendSubviewToBack:backgroundView]; 17 [backgroundView release]; 18 } 19 } 20 //for other views 21 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index 22 { 23 [super insertSubview:view atIndex:index]; 24 [self sendSubviewToBack:backgroundView]; 25 } 26 @end 27 //YourViewController.m 28 - (void)viewWillAppear:(BOOL)animated 29 { 30 [super viewWillAppear:animated]; 31 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_bar_bg.png"]]; 32 } 33 Objective-c代码 34 //CustomNavigationBar.h 35 @interface UINavigationBar (UINavigationBarCategory) 36 UIImageView *backgroundView; 37 - (void)setBackgroundImage:(UIImage*)image; 38 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index; 39 @end 40 //CustomNavigationBar.m 41 @implementation UINavigationBar (UINavigationBarCategory) 42 -(void)setBackgroundImage:(UIImage*)image { 43 if(image == nil) { 44 [backgroundView removeFromSuperview]; 45 } else { 46 backgroundView = [[UIImageView alloc] initWithImage:image]; 47 backgroundView.tag = 1; 48 backgroundView.frame = CGRectMake(0.f, 0.f, self.frame.size.width, self.frame.size.height); 49 backgroundView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 50 [self addSubview:backgroundView]; 51 [self sendSubviewToBack:backgroundView]; 52 [backgroundView release]; 53 } 54 } 55 //for other views 56 - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index 57 { 58 [super insertSubview:view atIndex:index]; 59 [self sendSubviewToBack:backgroundView]; 60 } 61 @end 62 //YourViewController.m 63 - (void)viewWillAppear:(BOOL)animated 64 { 65 [super viewWillAppear:animated]; 66 [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_bar_bg.png"]]; 67 }