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