统一设置导航栏返回按钮
XMGNavigationViewController.m
#import "XMGNavigationViewController.h" @interface XMGNavigationViewController () @end @implementation XMGNavigationViewController + (void)load { UINavigationBar *navBar = [UINavigationBar appearanceWhenContainedIn:self, nil]; // 只要是通过模型设置,都是通过富文本设置 // 设置导航条标题 => UINavigationBar NSMutableDictionary *attrs = [NSMutableDictionary dictionary]; attrs[NSFontAttributeName] = [UIFont boldSystemFontOfSize:20]; [navBar setTitleTextAttributes:attrs]; // 设置导航条背景图片 [navBar setBackgroundImage:[UIImage imageNamed:@"navigationbarBackgroundWhite"] forBarMetrics:UIBarMetricsDefault]; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { if (self.childViewControllers.count > 0) { // 非根控制器 // 设置返回按钮,只有非根控制器 viewController.navigationItem.leftBarButtonItem = [UIBarButtonItem backItemWithimage:[UIImage imageNamed:@"navigationButtonReturn"] highImage:[UIImage imageNamed:@"navigationButtonReturnClick"] target:self action:@selector(back) title:@"返回"]; } // 真正在跳转 [super pushViewController:viewController animated:animated]; } - (void)back { [self popViewControllerAnimated:YES]; } @end
UIBarButtonItem+Item.m
import "UIBarButtonItem+Item.h" @implementation UIBarButtonItem (Item) + (UIBarButtonItem *)backItemWithimage:(UIImage *)image highImage:(UIImage *)highImage target:(id)target action:(SEL)action title:(NSString *)title{ UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom]; [backButton setTitle:title forState:UIControlStateNormal]; [backButton setImage:image forState:UIControlStateNormal]; [backButton setImage:highImage forState:UIControlStateHighlighted]; [backButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [backButton setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; [backButton sizeToFit]; backButton.contentEdgeInsets = UIEdgeInsetsMake(0, -20, 0, 0); [backButton addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; return [[UIBarButtonItem alloc] initWithCustomView:backButton]; } @end