三国杀武将|手游三国杀边锋版

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

suiling 2017-05-03 16:28:56 7214
本文來自 iOS_愛OS的簡書 ,作者 suiling

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

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)

540832-54821bf1d9792d17.gif

如上圖:
選擇OPEN CENTER INTERACTION MODE

  • None 無法滑動 中間控制器 不能點擊導航欄 菜單按鈕

  • Full 可滑動 中間控制器 可以點擊 導航欄 菜單按鈕

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

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

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

  • 這個庫 不支持 下面的操作
    1.不支持 頂部 或者 底部 抽屜
    2.不支持 同時 打開 左右 抽屜
    3.不支持 顯示最小抽屜寬度(沒看懂)
    4.不支持 將容器控制器設置為 中部控制器 (UINavigationController 除外)
    我對MMDrawerController框架的詳細注釋
    直接下載上面的項目, 對立面的代碼進行了詳細的注釋和說明,趕時間的同學可以看看我的注釋 基本上你們瞄一眼就可以直接開始使用了.
    未完待續...

三国杀武将