iOS中对图片的缩放、旋转、拖拽的手势整理

iOS中对图片的缩放、旋转、拖拽的手势整理

 1 //首先把手势添加到图片中去,同时确保图片支持点击和多指
 2   //图片放大缩小手势
 3   UIPinchGestureRecognizer *pinGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(changeScale:)];
 4   [self.imageView addGestureRecognizer:pinGesture];
 5   self.imageView.userInteractionEnabled = YES;
 6   self.imageView.multipleTouchEnabled = YES;
 7   
 8   //图片拖拉手势
 9   UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(changePoint:)];
10   [self.imageView addGestureRecognizer:panGesture];
11   
12   //图片旋转手势
13   UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateImage:)];
14   [self.imageView addGestureRecognizer:rotationGesture];
 1 //对应上面的三种手势
 2 - (void)changeScale:(UIPinchGestureRecognizer *)sender {
 3   UIView *view = sender.view;
 4   if (sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged) {
 5     view.transform = CGAffineTransformScale(view.transform, sender.scale, sender.scale);
 6     sender.scale = 1.0;
 7   }
 8 }
 9 
10 - (void)changePoint:(UIPanGestureRecognizer *)sender {
11   UIView *view = sender.view;
12   if (sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged) {
13     CGPoint translation = [sender translationInView:view.superview];
14     [view setCenter:CGPointMake(view.centerX+translation.x, view.centerY+translation.y)];
15     [sender setTranslation:CGPointZero inView:view.superview];
16   }
17 }
18 
19 - (void)rotateImage:(UIRotationGestureRecognizer *)sender {
20   UIView *view = sender.view;
21   if (sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged) {
22     view.transform = CGAffineTransformRotate(view.transform, sender.rotation);
23     [sender setRotation:0];
24   }
25 }

 

posted @ 2016-01-14 17:28  jackma86  阅读(2996)  评论(0编辑  收藏  举报