ios手势识别之旋转+缩放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 

以上是关于ios手势识别之旋转+缩放的主要内容,如果未能解决你的问题,请参考以下文章

为啥我们必须将手势识别器的旋转/缩放设置回 0/1?

iOS开发之手势识别汇总

iOS开发之手势识别汇总

iOS transform解决连续多次旋转缩放,实现图片旋转缩放效果

ScrollView 的子视图上的旋转手势和它的捏缩放可以一起工作吗?

Android点击事件之多点触摸与手势识别