IOS滑动返回的时候先创建基类navicontroller控制器,以后创建都继承它
- (void)viewDidLoad {
[super viewDidLoad];
// 获取系统自带滑动手势的target对象
id target = self.interactivePopGestureRecognizer.delegate;
// // 创建全屏滑动手势,调用系统自带滑动手势的target的action方法
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
//
// // 设置手势代理,拦截手势触发
pan.delegate = self;
//
// // 给导航控制器的view添加全屏滑动手势
[self.view addGestureRecognizer:pan];
//
// // 禁止使用系统自带的滑动手势
self.interactivePopGestureRecognizer.enabled = NO;
// Do any additional setup after loading the view.
}
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
// 注意:只有非根控制器才有滑动返回功能,根控制器没有。
// 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器
if (self.childViewControllers.count == 1) {
// 表示用户在根控制器界面,就不需要触发滑动手势,
return NO;
}
return YES;
}
自定义导航了同样也是创建基类控制器(viewcontroller或taberviewcontroller)创建公用方法
- (void)layoutNavigationBar:(UIImage*)backGroundImage
titleColor:(UIColor*)titleColor
titleFont:(UIFont*)titleFont
leftBarButtonItem:(UIBarButtonItem*)leftItem
rightBarButtonItem:(UIBarButtonItem*)rightItem {
if (backGroundImage) {
[self.navigationController.navigationBar setBackgroundImage:backGroundImage forBarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
}
if (titleColor&&titleFont) {
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:titleColor,NSFontAttributeName:titleFont}];
}
else if (titleFont) {
[self.navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:titleFont}];
}
else if (titleColor){
[self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:titleColor}];
}
if (leftItem) {
self.navigationItem.leftBarButtonItem= leftItem;
}
if (rightItem) {
self.navigationItem.rightBarButtonItem=rightItem;
}
}