Airbnb for iOS 的侧滑导航菜单是怎么实现的?

GitHub上有一个叫RESideMenu的开源组件实现了侧滑菜单的功能,最近一次更新左划右划都可以用了。去年10月注意到这个东西,后来自己也一直在用。

附上链接:
https://github.com/romaonthego/RESideMenu

类似这样:

几个月前曾经粗略的阅读过源码,那时大致思路似乎是这样:

  1. 一个RootViewController持有一个LeftMenuView和ContentView,均是RootView的SubView,并在初始化的时候用addChildViewController添加LeftMenu和Content的ViewController。
  2. 通过GestureRecognizer根据需求调整View的Alpha,然后加CGAffineTransform并Animate。左划就缩放+平移ContentView然后调整LeftMenuView的Alpha为1,划回来则是相反,期间还有一个侧滑菜单文字的缩放特效。
  3. ContentViewController通常是个NavController,通过LeftMenuView用Storyboard初始化根视图控制器的。

Airbnb的侧滑,在滑动的动画效果里应该还加了Transform3DMakeRotation实现透视效果的样子。

个人感觉或者猜测左下角这个下三角可能是起到“重置LeftMenu和Content”的效果吧。

谢邀..个人水平一般般并没有逐行仔细阅读源码,如果有疏漏还请纠正。

— 完 —