@interface NJViewController ()<UIGestureRecognizerDelegate> @property (weak, nonatomic) IBOutlet UIImageView *iconView; @end @implementation NJViewController - (void)viewDidLoad { [super viewDidLoad]; [self pichTest]; [self rotationTest]; } // 该方法返回的BOOL值决定了view是否能够同时响应多个手势 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { NSLog(@"%@ - %@", gestureRecognizer.class, otherGestureRecognizer.class); return YES; } - (void)pichTest { // 捏合手势 UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] init]; pinch.delegate = self; [self.iconView addGestureRecognizer:pinch]; [pinch addTarget:self action:@selector(pinchView:)]; } - (void)pinchView:(UIPinchGestureRecognizer *)pinch { // NSLog(@"捏合事件 %.1f", pinch.scale); // self.iconView.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale); // 1.0 * 0.9 self.iconView.transform = CGAffineTransformScale(self.iconView.transform, pinch.scale, pinch.scale); pinch.scale = 1.0; } - (void)rotationTest { // 旋转 UIRotationGestureRecognizer *gesture = [[UIRotationGestureRecognizer alloc] init]; gesture.delegate = self; [self.iconView addGestureRecognizer:gesture]; [gesture addTarget:self action:@selector(rotationView:)]; } - (void)rotationView:(UIRotationGestureRecognizer *)gesture { // NSLog(@"旋转事件 %.1f", gesture.rotation); // 每次从最初的位置开始 // self.iconView.transform = CGAffineTransformMakeRotation(gesture.rotation); // 在传入的transform基础上递增一个弧度 self.iconView.transform = CGAffineTransformRotate(self.iconView.transform, gesture.rotation); // 将旋转的弧度清零(注意不是将图片旋转的弧度清零, 而是将当前手指旋转的弧度清零) gesture.rotation = 0;// 如果理解不了 , 记住就OK }