UINavigationBar自定义背景以及按钮

UINavigationBar自定义导航栏背景和按钮,完美支持横屏竖屏旋转,视图控制器可以分别使用自己的导航栏

此方法可以通过Apple审核,导航上的按钮背景需要做,否则看起来不那么和之又谐  . 此方法使用于ios5。0以下


//CustomNavigationBar.h   
@interface UINavigationBar (UINavigationBarCategory)   
UIImageView *backgroundView;   
- (void)setBackgroundImage:(UIImage*)image;   
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;   
@end   
  
//CustomNavigationBar.m   
@implementation UINavigationBar (UINavigationBarCategory)   
-(void)setBackgroundImage:(UIImage*)image   
{   
    if(image == nil)   
    {   
        [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 addSubview:backgroundView];   
        [self sendSubviewToBack:backgroundView];   
        [backgroundView release];   
    }   
}   
  
//for other views   
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index   
{   
    [super insertSubview:view atIndex:index];   
    [self sendSubviewToBack:backgroundView];   
}   
@end   
  
//YourViewController.m   
- (void)viewWillAppear:(BOOL)animated   
{   
    [super viewWillAppear:animated];   
    [self.navigationController.navigationBar   
        setBackgroundImage:[UIImage imageNamed:@"navigation_bar_bg.png"]];   

//判断设备的版本

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 50000  

    if ([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]){  

       //ios5 新特性  

        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"titleBar.png"] forBarMetrics:UIBarMetricsDefault];  

    }  

#endif  


}  

原文地址:https://www.cnblogs.com/linyawen/p/2594127.html