iOS仿照QQ实现左滑菜单(抽屉式结构)

iOS抽屉式结构介绍

手机上装着QQ的朋友,肯定用过QQ左滑设置菜单。本文介绍的抽屉式结构就是和QQ类似的左滑显示菜单的结构。

iOS抽屉式结构实现分析

实现抽屉式结构其实不难,找准关键点就行。首先抽屉式结构是菜单页不动,主页向右滑动来展示菜单页。我们可以自定义一个controller,设置两个属性,一个mainVC,一个menuVC,将mainVC和menuVC的view添加到controller的view上(menuVC的view在下面)。然后实现两个方法openLeftMenu和closeLeftMenu(这两个方法主要是计算mainVC的view的位置),基本就完成了。然后给mainVC的view添加tap和pan手势,实现mainVC的view跟随手指移动即可。

主要代码

下面是主要实现代码:

// 使mainVC的view跟随手指移动,并比较结束时mainVC的view的左侧是在屏幕中心线的
// 左边还是右边从而判断结束时是打开还是要关闭菜单页
- (void)handlePanGesture:(UIPanGestureRecognizer *)pan {
    // move pan.view with finger
    CGPoint offsetPoint = [pan translationInView:pan.view];
    pan.view.center = CGPointMake(pan.view.center.x + offsetPoint.x, pan.view.center.y);
    [pan setTranslation:CGPointZero inView:self.view];
    
    // fix pan.view center when slide end
    if (pan.state == UIGestureRecognizerStateEnded) {
        CGFloat mainVCLeft = pan.view.frame.origin.x;
        if (mainVCLeft < kScreenWidth / 2.f) {
            [self closeLeftMenu];
        } else {
            [self openLeftMenu];
        }
    }
}

我做了demo放到了GitHub上,喜欢的同学可以去下载参考使用。
GitHub

你可能感兴趣的:(iOS仿照QQ实现左滑菜单(抽屉式结构))