转载

iOS 抽屉效果 MMDrawerController 框架 源码 解读

这是一个抽屉导航控制器, 越来越多的应用开始使用抽屉效果, 这个库是 轻量级的 抽屉导航控制器

MMDrawerController 是一个 容器 控制器(和 UINavigationController 或者 UITabBarController 相似) 拥有三个自控制器, 中部, 左边抽屉, 右边抽屉 ,创建 MMDrawerController 前 必须 先创建 上面提到的三个自控制器(左中右), 然后调用 下面给出的初始化方法 来初始化

-(instancetype)initWithCenterViewController:(UIViewController *)centerViewController leftDrawerViewController:(UIViewController *)leftDrawerViewController rightDrawerViewController:(UIViewController *)rightDrawerViewController;

UINavigationController 可以作为 中部 的子控制器
MMDrawerController 自动支持 UINavigationController 作为 中部 自控制器, 可以正确管理view上的手势(无论是navigation bar view 还是 viewController 的view).
这个库 也支持包含 其他控制器容器, 这时 手势开关 不接受定制

  • 从子控制器 获取 MMDrawerController
    子控制器 可以通过 分类(UIViewController+MMDrawerController) 来 获取关于 容器 MMDrawerController 的信息
    即使 子控制器 包含在 UINavigationController 中, 在这个库中 自控制器的 容器 默认是 MMDrawerController .
    更多 关于 这个分类的信息, 去该分类中查看

  • MMDrawerOpenCenterInteractionMode
    控制了 当抽屉打开时 用户和中部控制器交互的模式. 默认是 MMDrawerOpenCenterInteractionModeNavigationBarOnly 只允许 中部控制器的导航栏可以交互,
    MMDrawerOpenCenterInteractionModeNone: 禁止用户和中部控制器有任何交互
    MMDrawerOpenCenterInteractionModeFull: 用户可以和中部控制器任何地方交互
    注意: 无论设置什么模式, 都不会影响 单击中部控制器 的 手势 去关闭抽屉(MMCloseDrawerGestureMode)

iOS 抽屉效果 MMDrawerController 框架 源码 解读

如上图:
选择OPEN CENTER INTERACTION MODE

  • None 无法滑动 中间控制器 不能点击导航栏 菜单按钮

  • Full 可滑动 中间控制器 可以点击 导航栏 菜单按钮

  • Nav Bar Only 不能滑动 中间控制器 可以点击 导航栏 菜单按钮

  • 打开和关闭 抽屉的手势
    每个抽屉实例都被添加了 两个手势, 拖动手势 和 单击手势,
    MMDrawerController 识别这些手势,
    根据打开和关闭手势的识别 和 抽屉控制器的当前状态, 来决定 这个手势 是否 传递下去

  • 启用 重用标志
    为了 恢复 MMDrawerController ,你必须给 中部控制器,左边抽屉,右边抽屉 和 MMDrawerController 设置重用标志restorationIdentifier, 这样, 你的应用在 进入后台 或者下次启动时 会 存储 抽屉的打开状态.

  • 这个库 不支持 下面的操作
    1.不支持 顶部 或者 底部 抽屉
    2.不支持 同时 打开 左右 抽屉
    3.不支持 显示最小抽屉宽度(没看懂)
    4.不支持 将容器控制器设置为 中部控制器 (UINavigationController 除外)
    我对MMDrawerController框架的详细注释
    直接下载上面的项目, 对立面的代码进行了详细的注释和说明,赶时间的同学可以看看我的注释 基本上你们瞄一眼就可以直接开始使用了.
    未完待续...

正文到此结束
Loading...