#import "MESNavigationController.h"
#import "HomeViewController.h"
@interface MESNavigationController ()<UINavigationControllerDelegate, UIGestureRecognizerDelegate>
@end
@implementation MESNavigationController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.interactivePopGestureRecognizer.delegate = self;
self.delegate = self;
// [UINavigationBar appearance].barTintColor = UWORGB_COLOR(0, 126, 259);
self.navigationBar.barTintColor = UWORGB_COLOR(0, 126, 259);
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:UWO_White}];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
if (self.viewControllers.count >= 1) {
viewController.hidesBottomBarWhenPushed = YES;
[viewController.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:UWO_White}];
// 将控制器中的返回按钮进行统一设置
viewController.navigationItem.leftBarButtonItem = [self addBarItemWithImage:@"icon_left_back" WithHighImage:@"icon_left_back" WithTagetAction:@selector(backClick) WithTarger:self];
}
if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
self.interactivePopGestureRecognizer.enabled = NO;
}
[super pushViewController:viewController animated:YES];
}
#pragma mark navigationItem按钮点击事件
- (void)backClick {
[self popViewControllerAnimated:YES];
}
- (UIBarButtonItem *)addBarItemWithImage:(NSString *)imageName WithHighImage:(NSString *)hightImage WithTagetAction:(SEL)action WithTarger:(id)target{
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:hightImage] forState:UIControlStateHighlighted];
CGRect btnRect = CGRectZero;
btnRect.size = CGSizeMake(30, 30);
button.frame = btnRect;
[button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
#pragma mark - UIGestureRecognizerDelegate 在根视图时不响应interactivePopGestureRecognizer手势
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if (self.navigationController.viewControllers.count == 1) {
return NO;
} else {
return YES;
}
}
#pragma mark - navigationDelegate 实现此代理方法也是为防止滑动返回时界面卡死
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
//开启滑动手势
if ([navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
navigationController.interactivePopGestureRecognizer.enabled = YES;
}
}
转载于:https://my.oschina.net/jack088/blog/874446