UIPanGestureRecognier的简单使用

首先照例先创建一个imageView

UIImageView *imageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"Pikachu"]];

imageView.frame = CGRectMake(100, 100, 300, 300);  

imageView.userInteractionEnabled=YES;

_imageView = imageView;

[self.view addSubview:imageView];

在创建手势 创建手势的方法是调用父类的 UIGestureRecognizer 的方法 并让这个imgaeView添加一个手势

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];

[self.imageView addGestureRecognizer:pan];


可以识别手指的最大数量 设置为3的时候 你一根,两个,三个手指都可以触发这个手势的方法

但是4  就不行了

pan.maximumNumberOfTouches = 3;


设置为2的时候 最少需要两个手指才能触发这个手势的方法

当设置的值大于maximumNumberOfTouches这个手势的方法将不会被触发

默认是1

pan.minimumNumberOfTouches = 1;


当触发这个手势的时候调用这个方法

-(void)pan:(UIPanGestureRecognizer *)pan{

你手指触摸到那个view的时候 那个点作为原点 坐标是(00

如果你想让你的view跟着手指的移动而移动 那个view这个参数应该是pan.viewsuperView

CGPoint  point1 =[pan translationInView:self.view];

我们打印这个点 你会发现 这个point1是相对于你第一次触摸到view得时候的那个点而言的

NSLog(@"point1 %@",NSStringFromCGPoint(point1));


用这个point2 可以知道在整个坐标轴上是按着那个方向 那个速度滑动的

x代表x y代表y  正负代表方向  数值代表大小 多少点每秒的速度移动

CGPoint point2 = [pan velocityInView:self.view];

NSLog(@"point2 %@",NSStringFromCGPoint(point2));


这个states也是父类的属性

switch (pan.state) {

    case UIGestureRecognizerStateBegan:


      break;

    case UIGestureRecognizerStateChanged:{

    

      pan.view.center = CGPointMake(pan.view.center.x+point1.x, pan.view.center.y+point1.y);

      

              这个方法是让拖拽的view跟着手指的滑动而滑动 这个view必须是pan.view.superview

      [pan setTranslation:CGPointZero inView:self.view];

    

    }

      break;

    case UIGestureRecognizerStateEnded:{

    

    }

      break;

      

    default:

      break;

  }








}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值