閒來無事,研究了下MMDrawerViewController側滑菜單的原理,記錄下,最近比較健忘。
側滑菜單是基於container ViewController做的,ios5之後加了UIViewController (UIContainerViewControllerProtectedMethods)一個類別方法.讓開發者可以自定義容器VC.這裏有一篇文章寫得很好http://www.cocoachina.com/industry/20140523/8528.html
側滑菜單實現步驟簡單拆分如下:
1.關閉appearance callbacks和rotation callbacks的傳遞
2.添加center child VC
3.添加left/right child VC,在- (void)beginAppearanceTransition:(BOOL)isAppearing animated:(BOOL)animated 和 - (void)endAppearanceTransition 之間改變center child VC和left/right child VC的座標並添加動畫。
簡要說明:
1.beginAppearanceTransition:YES animated:YES 和 endAppearanceTransition一組相當於顯視調用viewWillAppear和viewDidAppear,相對的beginAppearanceTransition:NO animated:YES 和 endAppearanceTransition一組相當於顯視調用viewWillDisappear和viewDidDisappear
2.創建容器VC關鍵:父子關係的建立以及父子關係的解除,遍歷得到所有的控制器,控制子控制器的生命週期