UIPanGestureRecognier的简单使用

来源:互联网 发布:淘宝卖家换支付宝 编辑:程序博客网 时间:2024/05/16 09:46

首先照例先创建一个imageView

UIImageView *imageView = [[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"Pikachu"]];

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

imageView.userInteractionEnabled=YES;

_imageView = imageView;

[self.view addSubview:imageView];

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

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(pan:)];

[self.imageViewaddGestureRecognizer: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) {

    caseUIGestureRecognizerStateBegan:


      break;

    caseUIGestureRecognizerStateChanged:{

    

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

      

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

      [pan setTranslation:CGPointZeroinView:self.view];

    

    }

      break;

    caseUIGestureRecognizerStateEnded:{

    

    }

      break;

      

    default:

      break;

  }








}
0 0
原创粉丝点击