SWIFT 抽屉菜单

参考网页:http://segmentfault.com/a/1190000002420095

写的真不错。赞

横向滑动的手势操作则是这两行代码:

let panGestureRecognizer = UIPanGestureRecognizer(target: self,action: "handlePanGesture:")
centerNavigationController.view.addGestureRecognizer(panGestureRecognizer)


handlePanGesture 处理了滑动手势:

func handlePanGesture(recognizer: UIPanGestureRecognizer) {
    // 判断是否从左向右
    let gestureIsDraggingFromLeftToRight = (recognizer.velocityInView(view).x > 0)

    switch(recognizer.state) {

    // 刚刚开始滑动
    case .Began:
        // 如果刚刚开始滑动的时候还处于主页面,则根据左右方向加入侧面菜单
        if (currentState == .BothCollapsed) {
            if (gestureIsDraggingFromLeftToRight) {
                addLeftPanelViewController()
            } else {
                addRightPanelViewController()
            }
        }

    // 如果是正在滑动,则偏移主视图的坐标实现跟随手指位置移动
    case .Changed:
        recognizer.view!.center.x = recognizer.view!.center.x + recognizer.translationInView(view).x
        recognizer.setTranslation(CGPointZero,inView: view)

    // 如果滑动结束
    case .Ended:
        // 判断该左还是该右
        if (leftViewController != nil) {
            let hasMovedGreaterThanHalfway = recognizer.view!.center.x > view.bounds.size.width animateLeftPanel(shouldExpand: hasMovedGreaterThanHalfway) } else if (rightViewController != nil) {
            let hasMovedGreaterThanHalfway = recognizer.view!.center.x < 0
            animateRightPanel(shouldExpand: hasMovedGreaterThanHalfway)
        }
    default:
        break
    }
}


相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...