美文网首页
利用手势拖拽控件并设置拖拽范围

利用手势拖拽控件并设置拖拽范围

作者: ZYiDa | 来源:发表于2017-06-12 10:30 被阅读85次

    在QQ语音通话时,隐藏语音通话界面后会出现一个按钮可以浮动拖拽,现在先来实现以下按钮的拖拽功能,稍后再来实现隐藏和进入通话界面的转场动画部分。
    第一步:原理图。

    IMG_0965.jpg

    在给控件添加UIPanGestureRecognizer手势后,可以在action方法中来限制手势所添加控件的拖拽范围,如上图,我们把范围限制在屏幕内。
    第二步:代码实现。

    #pragma mark 手势执行方法
    - (void) handlePan:(UIPanGestureRecognizer*) recognizer
    {
        CGPoint translation     = [recognizer translationInView:self.imageView];
        CGPoint viewNewPoint    = CGPointMake(recognizer.view.center.x + translation.x,recognizer.view.center.y + translation.y);
    
        //TODO:给拖拽控件设置范围
        viewNewPoint.y          = MAX(recognizer.view.frame.size.height/2, viewNewPoint.y);
        viewNewPoint.y          = MIN(self.view.frame.size.height - recognizer.view.frame.size.height/2,  viewNewPoint.y);
        viewNewPoint.x          = MAX(recognizer.view.frame.size.width/2, viewNewPoint.x);
        viewNewPoint.x          = MIN(self.view.frame.size.width - recognizer.view.frame.size.width/2,viewNewPoint.x);
        recognizer.view.center  = viewNewPoint;
        [recognizer setTranslation:CGPointZero inView:self.view];
    }
    
    

    第三步,效果图。

    QQ20170612-101533.gif

    代码不足的地方,还请多多指教。

    相关文章

      网友评论

          本文标题:利用手势拖拽控件并设置拖拽范围

          本文链接:https://www.haomeiwen.com/subject/jaxlqxtx.html