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 }