闲来无事,研究了下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关键:父子关系的建立以及父子关系的解除,遍历得到所有的控制器,控制子控制器的生命周期