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

2017-06-12  本文已影响85人  ZYiDa

在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

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

上一篇下一篇

猜你喜欢

热点阅读