iOS 抽屜效果 MMDrawerController 框架 源碼 解讀


抽屜效果 MMDrawerController 使用說明

這是一個抽屜導航控制器, 越來越多的應用開始使用抽屜效果, 這個庫是 輕量級的 抽屜導航控制器

  • 創(chuàng)建 MMDrawerController
    MMDrawerController 是一個 容器 控制器(和 UINavigationController 或者 UITabBarController 相似) 擁有三個自控制器, 中部, 左邊抽屜, 右邊抽屜 ,創(chuàng)建 MMDrawerController 前 必須 先創(chuàng)建 上面提到的三個自控制器(左中右), 然后調用 下面給出的初始化方法 來初始化
-(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)
MMDrawerOpenCenterInteractionMode.gif

如上圖:
選擇OPEN CENTER INTERACTION MODE

  • None 無法滑動 中間控制器 不能點擊導航欄 菜單按鈕
  • Full 可滑動 中間控制器 可以點擊 導航欄 菜單按鈕
  • Nav Bar Only 不能滑動 中間控制器 可以點擊 導航欄 菜單按鈕

  • 打開和關閉 抽屜的手勢
    每個抽屜實例都被添加了 兩個手勢, 拖動手勢 和 單擊手勢,
    MMDrawerController 識別這些手勢,
    根據打開和關閉手勢的識別 和 抽屜控制器的當前狀態(tài), 來決定 這個手勢 是否 傳遞下去

  • 啟用 重用標志
    為了 恢復 MMDrawerController ,你必須給 中部控制器,左邊抽屜,右邊抽屜 和 MMDrawerController 設置重用標志restorationIdentifier, 這樣, 你的應用在 進入后臺 或者下次啟動時 會 存儲 抽屜的打開狀態(tài).


  • 這個庫 不支持 下面的操作
    • 1.不支持 頂部 或者 底部 抽屜
    • 2.不支持 同時 打開 左右 抽屜
    • 3.不支持 顯示最小抽屜寬度(沒看懂)
    • 4.不支持 將容器控制器設置為 中部控制器 (UINavigationController 除外)

直接下載上面的項目, 對立面的代碼進行了詳細的注釋和說明,趕時間的同學可以看看我的注釋 基本上你們瞄一眼就可以直接開始使用了.

2017-05-03 補充

抽時間 把 MMDrawerControllerGithub 上的使用文檔 翻譯了下,

2017-05-04補充


2017-05-08 補充

MMDrawerController 寫了個swift的抽屜效果

再次補充

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容