ZHNavigationController

a library for manager your viewController better


Keywords
full-screen-slider, gesture-recognition, navigation-controller, navigationbar
License
MIT
Install
pod try ZHNavigationController

Documentation

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的时候,都采用上述包裹的方式.

结构图

其中灰色区域的控制器就是你自己的控制器.