CJSidePopGesture
iOS 侧滑返回修改
安装
使用 CocoaPods
pod 'CJSidePopGesture', '~> 2.0.0'
or
pod 'CJSidePopGesture'
概览
该扩展来自 @forkingdog 团队和其他一些人的源代码,参考文章地址:(http://www.jianshu.com/p/f83acf1d337b)
用法
AOP,只需添加2个文件,无需任何设置,所有导航控制器都将能够自动使用全屏弹出手势。
要禁用导航控制器的此弹出手势
navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;
要禁用视图控制器的此弹出手势
viewController.fd_interactivePopDisabled = YES;
需要至少 iOS 7.0。
基于视图控制器导航栏外观
它在使用全屏手势推或弹出视图控制器时正确处理导航栏过渡
- 有栏 -> 无栏
- 无栏 -> 有栏
- 无栏 -> 无栏
此优化默认启用,从此以后您不需要调用 UINavigationController 的 -setNavigationBarHidden:animated:
方法,而是使用视图控制器的特定 API 来隐藏其栏
- (void)viewDidLoad {
[super viewDidLoad];
self.fd_prefersNavigationBarHidden = NO;
}
此属性默认为 NO。
带滚动视图的视图控制器
如果您想在带有 scrollView
或是其子类的 ViewController
中使用全屏弹出手势,您应该自定义 scrollView
或是其子类,并重载 gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
方法。如下所示:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
if (self.contentOffset.x <= 0) {
if ([otherGestureRecognizer.delegate isKindOfClass:NSClassFromString(@"_FDFullscreenPopGestureRecognizerDelegate")]) {
return YES;
}
}
return NO;
}
...
- 1.0.0 首次支持侧滑返回的修改,这个版本支持到 iOS7.0 以及以上。
许可协议
MIT