UINavigationBar自定义背景以及按钮

本文介绍如何在iOS应用中自定义导航栏背景和按钮,支持横屏竖屏旋转,适用于iOS5.0以下版本。通过实现UINavigationBar的自定义类,可以分别为不同的视图控制器设置独特的导航栏样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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  



转自:http://blog.youkuaiyun.com/jinglijun/article/details/7259729 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值