ios手势识别之旋转+缩放
1 #import "NJViewController.h" 2 3 @interface NJViewController ()<UIGestureRecognizerDelegate> 4 @property (weak, nonatomic) IBOutlet UIImageView *iconView; 5 6 @end 7 8 @implementation NJViewController 9 10 - (void)viewDidLoad 11 { 12 [super viewDidLoad]; 13 14 [self pichTest]; 15 [self rotationTest]; 16 } 17 18 // 该方法返回的BOOL值决定了view是否能够同时响应多个手势 19 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 20 { 21 NSLog(@"%@ - %@", gestureRecognizer.class, otherGestureRecognizer.class); 22 return YES; 23 } 24 25 - (void)pichTest 26 { 27 // 捏合手势 28 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] init]; 29 pinch.delegate = self; 30 31 [self.iconView addGestureRecognizer:pinch]; 32 [pinch addTarget:self action:@selector(pinchView:)]; 33 } 34 35 36 - (void)pinchView:(UIPinchGestureRecognizer *)pinch 37 { 38 // self.iconView.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale); 39 self.iconView.transform = CGAffineTransformScale(self.iconView.transform, pinch.scale, pinch.scale); 40 41 pinch.scale = 1.0; 42 } 43 44 - (void)rotationTest 45 { 46 // 旋转 47 UIRotationGestureRecognizer *gesture = [[UIRotationGestureRecognizer alloc] init]; 48 gesture.delegate = self; 49 50 [self.iconView addGestureRecognizer:gesture]; 51 [gesture addTarget:self action:@selector(rotationView:)]; 52 } 53 54 - (void)rotationView:(UIRotationGestureRecognizer *)gesture 55 { 56 // 每次从最初的位置开始 57 // self.iconView.transform = CGAffineTransformMakeRotation(gesture.rotation); 58 // 在传入的transform基础上递增一个弧度 59 self.iconView.transform = CGAffineTransformRotate(self.iconView.transform, gesture.rotation); 60 // 将旋转的弧度清零(注意不是将图片旋转的弧度清零, 而是将当前手指旋转的弧度清零) 61 gesture.rotation = 0;// 如果理解不了 , 记住就OK 62 } 63 64 @end