1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | - (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"); } |
iOS6创建iOS7风格导航导,导航条自动添加返回按钮
Leave a reply