IOS6、IOS7导航栏适配问题

本文介绍如何使用Objective-C自定义iOS应用中的导航栏样式,包括背景图片、按钮及文字颜色等,并展示了如何根据不同iOS版本进行适配。此外,还提供了设置状态栏样式的代码实现。

#pragma mark 一个类只会调用一次

+ (void)initialize

{

    // 1.取出设置主题的对象

    UINavigationBar *navBar = [UINavigationBarappearance];

    UIBarButtonItem *barItem = [UIBarButtonItemappearance];

    

    // 2.设置导航栏的背景图片

    NSString *navBarBg = nil;

    if (iOS7) { // iOS7

        navBarBg = @"NavBar64";

        

        // 设置导航栏的渐变色为白色(iOS7中返回箭头的颜色变为这个颜色:白色)

        navBar.tintColor = [UIColor whiteColor];

    } else { // 非iOS7

        navBarBg = @"NavBar";

        [UIApplicationsharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;

        

        // 设置导航栏按钮的背景图片

        [barItem setBackgroundImage:[UIImageimageNamed:@"NavButton"]forState:UIControlStateNormalbarMetrics:UIBarMetricsDefault];

        [barItem setBackgroundImage:[UIImageimageNamed:@"NavButtonPressed"]forState:UIControlStateHighlightedbarMetrics:UIBarMetricsDefault];

        

        // 设置导航栏返回按钮的背景图片

        [barItem setBackButtonBackgroundImage:[UIImageimageNamed:@"NavBackButton"]forState:UIControlStateNormalbarMetrics:UIBarMetricsDefault];

        [barItem setBackButtonBackgroundImage:[UIImageimageNamed:@"NavBackButtonPressed"]forState:UIControlStateHighlightedbarMetrics:UIBarMetricsDefault];

    }

    

    [navBar setBackgroundImage:[UIImageimageNamed:navBarBg] forBarMetrics:UIBarMetricsDefault];

    

    // 3.设置导航栏标题颜色为白色

    [navBar setTitleTextAttributes:@{

            UITextAttributeTextColor : [UIColorwhiteColor]

    }];

    

    // 4.设置导航栏按钮文字颜色为白色

    [barItem setTitleTextAttributes:@{

            UITextAttributeTextColor : [UIColorwhiteColor],

            UITextAttributeFont : [UIFontsystemFontOfSize:13]

    }forState:UIControlStateNormal];

}

 

 

#pragma mark 控制状态栏的样式

/*

 状态栏的管理:

 1> iOS7之前:UIApplication

 2> iOS7开始:交给对应的控制器去管理

 */

- (UIStatusBarStyle)preferredStatusBarStyle

{

    // 白色样式

    returnUIStatusBarStyleLightContent;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值