- (void)viewDidLoad { [super viewDidLoad];
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) {
// 1、修改导航条样式 UINavigationBar *bar = [UINavigationBar appearance]; // 修改导航条背景 [bar setBackgroundImage:[UIImage imageNamed:@"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault]; // 修改导航条文字样式 [bar setTitleTextAttributes:@{ UITextAttributeTextColor : [UIColor blackColor], UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero] }];
// 2、修改导航条按钮样式 UIBarButtonItem *item = [UIBarButtonItem appearance];
UIImage *normal = [UIImage imageNamed:@"navigationbar_button_background.png"]; UIImage *highlight = [UIImage imageNamed:@"navigationbar_button_background_pushed.png"];
// 修改导航条按钮背景 [item setBackgroundImage:normal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [item setBackgroundImage:highlight forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
// 修改导航条按钮文字样式 [item setTitleTextAttributes:@{ UITextAttributeTextColor : kBlueColor, UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero], } forState:UIControlStateNormal]; [item setTitleTextAttributes:@{ UITextAttributeTextColor : kBlueColor, UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero] } forState:UIControlStateHighlighted];
[item setBackButtonBackgroundImage:normal forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [item setBackButtonBackgroundImage:highlight forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
// 3、修改状态栏样式 [UIApplication sharedApplication].statusBarHidden = NO; [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;
} }
#pragma mark - 2、代理方法 #pragma mark 2.1、控制器将要视图显示 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { // 在未自定义导航条返回键的情况下,iOS6及以下版本设备导航条自动添加仿iOS7返回按钮(根控制器例外) if (!(viewController == navigationController.viewControllers.firstObject || [(RMBaseVCtrl *)viewController isCustomNBI]) && [viewController isKindOfClass:[RMBaseVCtrl class]]){
// 栈控制器数组 NSArray *vcs = navigationController.viewControllers;
// 前一个控制器序号 int penultimate = (int)vcs.count - 2;
if (penultimate >= 0) {
// 前一个控制器标题 NSString *title = [[vcs objectAtIndex:penultimate] title];
if (title == nil || title.length > 4) title = @"返回";
// 返回按钮文字为前一个控制器标题、基本功能为返回上一级目录 viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem barButtonItemWithBackButtonTitle:title addTarget:self action:@selector(barButtonItemBack:)]; } } }
#pragma mark 2.2、控制器完成视图显示 - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated { // NSLog(@"def"); }
|