很多软件都运了抽屉效果,比如qq的左抽屉,滴滴打车,和uber都运用了抽屉,那么抽屉到底是什么个套路呢,这里讲下我个人的理解。
github上看了几个抽屉的demo,好用有代表性的有,MMDrawerController-with-storybord-demo,还有RESideMenu。
这两个挺好用的,但是跟个人的实际需求还是有区别的。有些交互和设计并不是跟这些完全一样,所以我们就要了解抽屉的设计思想,和建立框架。
首先讲下MMDrawerController,
将这个代码在
我们看代码,会发现他用drawerController对中心vc和leftVc和rightVc进行控制,也就是说我们的rootVC就是这个drawerController,而左中右的vc是二级的平行vc,从图上的效果,我们也可以看不来是这个关系,分析出这个关系,我们也就可以确定,这个抽屉效果是否适合自己的项目。
我么再来分析下RESideMenu:
我们可以看到中心视图缩小,左右视图在中心视图的背后,这里也给出了使用方法:
可以看出root依然是sideMenuViewController,sideMenuViewController控制着左中右。
根据以上两个例子,我们可以看出,抽屉效果中抽屉vc和centerVC是平级的,我们可以创建一个rootvc,然后自己控制左中右,我们一般在做项目的时候,把中vc设置为navigationVC或者tabbarVC。没有把抽屉的vc写在主vc的下一级别,因为是vc独立出来,方便我们的使用和调用,和主vc没有关系,减少耦合。这样我们可以在抽屉VC里随意更改和制作,不会影响主逻辑。
如何自己创建轻量级抽屉:
这里我根据这个思想,自己制作一个轻量级抽屉:
因为我需要用不到那么多,或者跟三方抽屉并不是很一样,这样我就自己写一个简单的抽屉,效果可以自己随意更改,目前就是个简单的,回头多加点其他效果。
很简单的思想:BaseViewController就是主vc,LeftViewController就是左抽屉。RootViewController就是控制器,控制这两个vc。这里主要就是自己写好RootViewController就好。RootViewController可以借鉴以上俩例子中的动效,自己修改。
以上是自己的理解,有好的理解,和建议,欢迎讨论🙃。