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 }