TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Oct 2017 |
Maintained by QuintGao.
部分内容参考 RTRootNavigationController 和 FDFullscreenPopGesture
现在大多数的APP都有导航栏联动效果,即滑动返回的时候导航栏也跟着一起返回,比如:网易新闻,网易云音乐,腾讯视频等等,于是通过查找一些资料及其他库的做法,自己也写了一个框架,可以让每一个控制器都拥有自己的导航栏,可以很方便的改变导航栏的样式等
层次结构
1. 根控制器的导航控制器 GKNavigationController
- GKWrapViewController
- GKWrapNavigationController
- 你的VC1
... push
- GKWrapViewController
- GKWrapNavigationController
- 你的VC2
2. UITabBarController作为根控制器
UITabBarController
tab1
GKNavigationController
- GKWrapViewController
- GKWrapNavigationController
- 你的VC1
tab2
GKNavigationController
- GKWrapViewController
- GKWrapNavigationController
- 你的VC2
...
UIViewController:
/** 是否禁止当前控制器的滑动返回(包括全屏返回和边缘返回) */
@property (nonatomic, assign) BOOL gk_interactivePopDisabled;
/** 是否禁止当前控制器的全屏滑动返回 */
@property (nonatomic, assign) BOOL gk_fullScreenPopDisabled;
/** 全屏滑动时,滑动区域距离屏幕左边的最大位置,默认是0,表示全屏都可滑动 */
@property (nonatomic, assign) CGFloat gk_popMaxAllowedDistanceToLeftEdge;
/** 设置导航栏的透明度 */
@property (nonatomic, assign) CGFloat gk_navBarAlpha;
如果你不想用我写的返回item,你可以在当前控制器或者基类控制器中重写下面的方法:
- (UIBarButtonItem *)gk_customBackItemWithTarget:(id)target action:(SEL)action;
如果你push到的是一个UITabBarController,你需要在每个分栏的root控制器中重新定义返回按钮
self.navigationItem.leftBarButtonItem = ...