來自MG
//
// MGNavVC.m
// MGDemo
//
// Created by ming on 16/7/8.
// Copyright ? 2016年 ming. All rights reserved.
//
#import "MGNavVC.h"
@interface MGNavVC ()<UINavigationBarDelegate,UIGestureRecognizerDelegate>
@end
@implementation MGNavVC
+ (void)load {
/// 1.UINavigationBar
UINavigationBar *navBarAppearence = [UINavigationBar appearance];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSFontAttributeName] = [UIFont systemFontOfSize:17];
// [navBarAppearence setBackgroundImage:[UIImage imageNamed:@"timo"] forBarMetrics:UIBarMetricsDefault];
[navBarAppearence setTitleTextAttributes:dict];
}
#pragma mark ========= 添加全屏滑動手勢 ==========
- (void)viewDidLoad {
[super viewDidLoad];
// setp1:需要獲取系統(tǒng)自帶滑動手勢的target對象
id target = self.interactivePopGestureRecognizer.delegate;
// setp2:創(chuàng)建全屏滑動手勢~調(diào)用系統(tǒng)自帶滑動手勢的target的action方法
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
// step3:設(shè)置手勢代理~攔截手勢觸發(fā)
pan.delegate = self;
// step4:別忘了~給導(dǎo)航控制器的view添加全屏滑動手勢
[self.view addGestureRecognizer:pan];
// step5:將系統(tǒng)自帶的滑動手勢禁用
self.interactivePopGestureRecognizer.enabled = NO;
// steo6:還記得剛剛設(shè)置的代理嗎?下面方法什么時候調(diào)用确沸?在每次觸發(fā)手勢之前都會詢問下代理捌锭,是否觸發(fā)。
}
- (void)handleNavigationTransition:(UIPanGestureRecognizer *)pan{
NSLog(@"%s",__func__);
}
/** 判斷是否為根控制器 */
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
// 只要不等于1就返回YES罗捎,說明此時具有滑動功能
return self.childViewControllers.count != 1;
}
#pragma mark ========= 攔截控制器的push操作 ==========
/**
* 攔截控制器的push操作
*/
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
if (self.childViewControllers.count > 0) {
// 判斷當(dāng)前控制器是否為根控制器观谦,如果不是,就執(zhí)行下列代碼
UIBarButtonItem *leftItem = [UIBarButtonItem itemWithImage:@"navigationButtonReturn" highImage:nil title:@"返回" target:self action:@selector(leftBtnClick)];
[viewController.navigationItem setLeftBarButtonItem:leftItem animated:YES];
// 隱藏下面的TabBar
viewController.hidesBottomBarWhenPushed = YES;
}
// else{
// viewController.hidesBottomBarWhenPushed = NO;
// }
// 這句super的push要放在后面, 讓viewController可以覆蓋上面設(shè)置的leftBarButtonItem
[super pushViewController:viewController animated:animated];
}
// 監(jiān)聽按鈕的點(diǎn)擊
- (void)leftBtnClick{
[self popViewControllerAnimated:YES];
}
@end