先贴上大神的blog 以示敬意 http://blog.sunnyxx.com/2015/06/07/fullscreen-pop-gesture/
不得不说这真的是一个很牛逼的库。
首先这是一个对全局都能起作用的库,他有一些默认的操作。意思就是说你只要导入了就能够起作用。
默认起的作用就是全屏的返回手势
说真的,贼好用,对于大冬天不愿意拿出2只手但是屏幕又大的同学,真的是交互上的绝对性胜利。而且这个实现简直真的可以像大神说的 丝滑来形容。缘 妙不可言
导航栏的改变
以 A push B 作介绍
想要控制导航栏的显示或者隐藏,Apple对导航栏的API设计上总是不尽人意。
唉,UINavigationController和UIViewController总是2个不相同的控制器,并且他们的关系其实并没有达到谁控制谁。
如果需求是需要Apush后将B隐藏,我们在设置的时候一般会
- 1、
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController setNavigationBarHidden:NO animated:YES];
}
- 或者2、
//要设置代理UINavigationControllerDelegate
// 将要显示控制器
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 判断要显示的控制器是否是自己
BOOL isShowHomePage = [viewController isKindOfClass:[self class]];
[self.navigationController setNavigationBarHidden:isShowHomePage animated:YES];
}
但是如果碰到丧心病狂的老板,他不要A也不要B,但是就要Push。
如果还按照以上写法,在用手势返回或者pop返回的时候,A界面会viewWillAppear执行。导致在滑动的过程中我们可以看到A界面导航栏的存在。这对强迫症来说完全不能忍,这时候FDFullscreenPopGesture就完全的解决了我们的问题。重要的是代码非常简洁,一句话。在所需要隐藏导航栏的界面写上
- (void)viewDidLoad
[super viewDidLoad];
self.navigationController.fd_prefersNavigationBarHidden = YES;
}
或者喜欢重载的写法也行:
- (BOOL)fd_prefersNavigationBarHidden {
return YES;
}