限制view的拖拽范围

作者: 再见远洋 | 来源:发表于2016-09-29 11:09 被阅读270次

先简单说一下需求,有一个view 需要给它添加一个拖拽手势,而且拖拽的时候不能超过屏幕边缘。看到这样一个需求,当然实现的方式有挺多的,你可以通过限制中心点的x值和y值 也可以限制view的最大x和最大y以及最小x最小y,这些都可以,今天要说的是通过限制中心点来做,有需要的可以自己拿去用:

    //添加手势
    UIView * cyanView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];
    cyanView.backgroundColor = [UIColor cyanColor];
    [self.view addSubview:cyanView];
    UIPanGestureRecognizer * panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self
                                                                                            action:@selector(panGes:)];
    [cyanView addGestureRecognizer:panGestureRecognizer];
-(void)panGes:(UIPanGestureRecognizer *)recognizer{

    CGPoint translation = [recognizer translationInView:self.view];
    CGPoint newCenter = CGPointMake(recognizer.view.center.x+ translation.x,
                                    recognizer.view.center.y + translation.y);
//    限制屏幕范围:
    newCenter.y = MAX(recognizer.view.frame.size.height/2, newCenter.y);
    newCenter.y = MIN(self.view.frame.size.height - recognizer.view.frame.size.height/2, newCenter.y);
    newCenter.x = MAX(recognizer.view.frame.size.width/2, newCenter.x);
    newCenter.x = MIN(self.view.frame.size.width - recognizer.view.frame.size.width/2,newCenter.x);
    recognizer.view.center = newCenter;
    [recognizer setTranslation:CGPointZero inView:self.view];
}

搞定,收工,希望能帮到有需要的小伙伴

相关文章

  • 限制view的拖拽范围

    先简单说一下需求,有一个view 需要给它添加一个拖拽手势,而且拖拽的时候不能超过屏幕边缘。看到这样一个需求,当然...

  • 事件高级(二)

    事件高级(二) 可重用的选项卡实例 限制范围的拖拽实例 磁性吸附的拖拽实例 解决拖拽问题一:选中文字 事件捕获:s...

  • Android clipToPadding和clipChildr

    属性说明 属性说明android:clipChildrenclipChildren表示是否限制子View在其范围内...

  • Unity实现弹弓功能

    写在前面 实现类似于愤怒的小鸟中的弹弓功能。 功能 拖拽小鸟松开时发射 拖拽范围的限制 实现 首先要用到Unity...

  • Android OnDragListener

    1、两个概念 1、目标View 不是被拖拽的View,是要拖拽去哪个区域,这个区域就目标View,它要设置OnDr...

  • android:clipToPadding和android:cl

    1.clipChildren:作用于爷ViewGroup,用于限制子View是否可以超出父ViewGroup的范围...

  • 关于clipChildren属性无效的原因

    clipChildren的意思是 是否限制子View在其范围内,默认为true。 常规原因 clipChildr...

  • 两种方法限制拖拽手势的范围

    UIGestureRecognizer是一个定义基本手势的抽象类,具体包含:1、拍击UITapGestureRec...

  • 自定义滚动条,滚轮事件

    1. 自定义滚动条 滚动条的原理就是一个限制范围的拖拽,在拖拽的同时,让滚动条对应的内容按照比例修改定位值。HTM...

  • 子view超出父view显示

    //在根布局的属性中加入 android:clipChildren是否限制子View在其范围内 默认不设置...

网友评论

    本文标题:限制view的拖拽范围

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