ZHNavigationController
该框架可以快速的让你的每一个控制器都拥有属于自己的navgationBar,实现真正意义上的自定制,同时提供多种手势,多种转场动画的支持,可根据自己的需求自行选择.
Contents
Getting Started【开始使用】
Features 【能做什么】
- 为每一个控制器定制
navigationBar
- 为每一个控制器添加
全屏侧滑返回手势
,或者使用系统的左侧侧滑返回手势
- 单独的禁用某一个页面的
侧滑返回手势
- 禁用全局页面的
侧滑返回手势
- 提供多种类型的侧滑返回交互动画效果
Gesture(手势相关) | Function(功能) | 支持(enable) | 不支持(disable) |
---|---|---|---|
禁用手势 | 禁用全局手势 | 支持 | - |
禁用手势 | 禁用单个页面手势 | 支持 | - |
半屏侧滑 | 屏幕左侧边缘右滑Pop
|
支持自定义样式,支持精度设置 | 不支持侧滑样式选择(默认使用自定义样式),不支持左滑Push
|
全屏侧滑 | 屏幕右滑Pop ,左滑Push
|
支持自定义样式,支持侧滑样式选择(默认使用自定义样式),支持左滑Push (可选) |
不支持精度设置. |
Features 【实现思路】
大致的需要实现的效果如下
网易新闻
今日头条
我们知道,为了满足多样化的navigation bar
需求,仅仅在控制器中修改navigation bar
的属性是很难达到上图效果的.因为多个控制器是共用同一个导航条的(同一个栈中的控制器).那么我们该怎么实现上述的效果,大致有三种实现思路:
1. 第一种是使用自定义navigationBar.淘宝,网易新闻,等使用的是这种.
2. 第二种是用截图的办法,在push到下一个页面时,截取屏幕,在使用edgePan来pop时看到的就是背后的截图,也能实现这种效果.京东,天猫等使用的是这种.
3. 第三种是使用了一种比较特别,比较巧妙的办法实现的,为每一个控制器拥有自己独立的导航栏
具体的思路可参考Jerry Tian's Blog.该框架借鉴的是第三种思路.采用导航控制器包裹的方式在填充到容器视图中,并将该容器视图作为我们导航控制器的根视图控制器,在每次push的时候,都采用上述包裹的方式.
结构图
其中灰色区域的控制器就是你自己的控制器.