一蛮艰、拖拽
示例代碼:
復(fù)制代碼
1 //
2 // ?YYViewController.m
3 // ?06-拖拽事件
4 //
5 // ?Created by apple on 14-6-19.
6 // ?Copyright (c) 2014年 itcase. All rights reserved.
7 //
8
9 #import "YYViewController.h"
10
11 @interface YYViewController ()
12 @property (strong, nonatomic) IBOutlet UIView *iconView;
13
14 @end
15
16 @implementation YYViewController
17
18 - (void)viewDidLoad
19 {
20 ? ? [super viewDidLoad];
21
22 ? ? //拖拽事件
23 ? ? UIPanGestureRecognizer *pan=[[UIPanGestureRecognizer alloc]init];
24 ? ? [self.iconView addGestureRecognizer:pan];
25 ? ? [pan addTarget:self action:@selector(panView:)];
26 }
27
28 -(void)panView:(UIPanGestureRecognizer*)pan
29 {
30 ? ? //以控制器上的view的左上角為坐標(biāo)原點(diǎn)
31 ? ? CGPoint point=[pan locationInView:pan.view];
32 ? ? NSLog(@"拖拽事件");
33 ? ? NSLog(@"獲取到的觸摸點(diǎn)的位置為:%@",NSStringFromCGPoint(point));
34
35 ? ? CGPoint point1=[pan translationInView:pan.view];
36 ? ? NSLog(@"拖拽事件1");
37 ? ? NSLog(@"獲取到的觸摸點(diǎn)的位置為:%@",NSStringFromCGPoint(point1));
38
39 ? ? //手指拖動(dòng)社牲,讓自定義的view也跟著手指移動(dòng)
40 ? ? CGPoint temp=self.iconView.center;
41 ? ? temp.x+=point1.x;
42 ? ? temp.y+=point1.y;
43 ? ? self.iconView.center=temp;
44
45 ? ? //清空
46 ? ? [pan setTranslation:CGPointZero inView:pan.view];
47 }
48 @end
復(fù)制代碼
注意點(diǎn):1.注意拖拽事件的位移疊加击狮。
注意數(shù)學(xué)遞增性哪痰,需要在每次調(diào)用完之后進(jìn)行清空處理份名。
2.注意獲取的點(diǎn)是以手指按下的點(diǎn)為原點(diǎn)的。CGPoint point1=[pan translationInView:pan.view];
//以控制器上的view的左上角為坐標(biāo)原點(diǎn) CGPoint point=[pan locationInView:pan.view];
二仿村、旋轉(zhuǎn)
示例代碼:
復(fù)制代碼
1 //
2 // ?YYViewController.m
3 // ?07-旋轉(zhuǎn)
4 //
5 // ?Created by apple on 14-6-19.
6 // ?Copyright (c) 2014年 itcase. All rights reserved.
7 //
8
9 #import "YYViewController.h"
10
11 @interface YYViewController ()
12 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
13
14 @end
15
16 @implementation YYViewController
17
18 - (void)viewDidLoad
19 {
20 ? ? [super viewDidLoad];
21
22 ? ? //旋轉(zhuǎn)
23 ? ? //創(chuàng)建手勢(shì)識(shí)別器(旋轉(zhuǎn))
24 ? ? UIRotationGestureRecognizer *gesture=[[UIRotationGestureRecognizer alloc]init];
25 ? ? //添加手勢(shì)識(shí)別器
26 ? ? [self.iconView addGestureRecognizer:gesture];
27 ? ? //監(jiān)聽(tīng)
28 ? ? [gesture addTarget:self action:@selector(gestureView:)];
29 }
30
31 -(void)gestureView:(UIRotationGestureRecognizer*)gesture
32 {
33
34 ? ? //旋轉(zhuǎn)的弧度:gesture.rotation
35 ? ? NSLog(@"旋轉(zhuǎn)事件疯特,旋轉(zhuǎn)的弧度為:%1f",gesture.rotation);
36
37 ? ? //讓圖片跟隨手指一起旋轉(zhuǎn)
38 ? ? //每次從最初的位置開(kāi)始
39 // ? ?self.iconView.transform=CGAffineTransformMakeRotation(gesture.rotation);
40
41 ? ? //在傳入的transform的基礎(chǔ)上旋轉(zhuǎn)
42 ? ? //在之前的基礎(chǔ)上,讓圖片跟隨一起旋轉(zhuǎn)(去掉自動(dòng)布局)
43 ? ? //注意問(wèn)題:以風(fēng)火輪的速度旋轉(zhuǎn)
44 ? ? self.iconView.transform=CGAffineTransformRotate(self.iconView.transform, gesture.rotation);
45 ? ? //將旋轉(zhuǎn)的弧度清零
46 ? ? //(注意不是將圖片旋轉(zhuǎn)的弧度清零勇婴,而是將當(dāng)前手指旋轉(zhuǎn)的弧度清零)
47 ? ? gesture.rotation=0;
48 }
49 @end
復(fù)制代碼
注意點(diǎn):
1.imageview默認(rèn)為不可交互的忱嘹,且不支持多點(diǎn)觸控,需要在storyboard中勾選這兩項(xiàng)耕渴。
2.旋轉(zhuǎn)的度數(shù)疊加
3.旋轉(zhuǎn)
將旋轉(zhuǎn)弧度清零之后拘悦,每次調(diào)用又從零開(kāi)始。
三橱脸、縮放
復(fù)制代碼
1 //
2 // ?YYViewController.m
3 // ?07-旋轉(zhuǎn)
4 //
5 // ?Created by apple on 14-6-19.
6 // ?Copyright (c) 2014年 itcase. All rights reserved.
7 //
8
9 #import "YYViewController.h"
10
11 @interface YYViewController ()
12 @property (weak, nonatomic) IBOutlet UIImageView *iconView;
13
14 @end
15
16 @implementation YYViewController
17
18 - (void)viewDidLoad
19 {
20 ? ? [super viewDidLoad];
21 ? ? [self pinchTest];
22 ? ? [self gestureTest];
23 }
24
25 -(void)pinchTest
26 {
27 ? ? ? ? //縮放
28 ? ? UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]init];
29 ? ? [self.iconView addGestureRecognizer:pinch];
30 ? ? [pinch addTarget:self action:@selector(pinchView:)];
31
32 ? ? //設(shè)置代理
33 ? ? pinch.delegate=self;
34 }
35
36 -(void)pinchView:( UIPinchGestureRecognizer* )pinch
37 {
38 ? ? //縮放的比例 ? ?pinch.scale;
39 ? ? NSLog(@"縮放:%f",pinch.scale);
40 ? ? //對(duì)圖片進(jìn)行縮放
41 // ? ?self.iconView.transform=CGAffineTransformMakeScale(pinch.scale,pinch.scale);
42 ? ? //在已有的基礎(chǔ)上對(duì)圖片進(jìn)行縮放
43 ? ? self.iconView.transform=CGAffineTransformScale(self.iconView.transform, pinch.scale, pinch.scale);
44 ? ? //清零
45 ? ? pinch.scale=1.0;
46 }
47 -(void)gestureTest
48 {
49 ? ? //旋轉(zhuǎn)
50 ? ? //創(chuàng)建手勢(shì)識(shí)別器(旋轉(zhuǎn))
51 ? ? UIRotationGestureRecognizer *gesture=[[UIRotationGestureRecognizer alloc]init];
52 ? ? //添加手勢(shì)識(shí)別器
53 ? ? [self.iconView addGestureRecognizer:gesture];
54 ? ? //監(jiān)聽(tīng)
55 ? ? [gesture addTarget:self action:@selector(gestureView:)];
56
57 ? ? //設(shè)置代理
58 ? ? gesture.delegate=self;
59 }
60 -(void)gestureView:(UIRotationGestureRecognizer*)gesture
61 {
62
63 ? ? //旋轉(zhuǎn)的弧度:gesture.rotation
64 ? ? NSLog(@"旋轉(zhuǎn)事件础米,旋轉(zhuǎn)的弧度為:%1f",gesture.rotation);
65
66 ? ? //讓圖片跟隨手指一起旋轉(zhuǎn)
67 ? ? //每次從最初的位置開(kāi)始
68 // ? ?self.iconView.transform=CGAffineTransformMakeRotation(gesture.rotation);
69
70 ? ? //在傳入的transform的基礎(chǔ)上旋轉(zhuǎn)
71 ? ? //在之前的基礎(chǔ)上,讓圖片跟隨一起旋轉(zhuǎn)(去掉自動(dòng)布局)
72 ? ? //注意問(wèn)題:以風(fēng)火輪的速度旋轉(zhuǎn)
73 ? ? self.iconView.transform=CGAffineTransformRotate(self.iconView.transform, gesture.rotation);
74 ? ? //將旋轉(zhuǎn)的弧度清零
75 ? ? //(注意不是將圖片旋轉(zhuǎn)的弧度清零慰技,而是將當(dāng)前手指旋轉(zhuǎn)的弧度清零)
76 ? ? gesture.rotation=0;
77 }
78
79 //實(shí)現(xiàn)代理方法
80 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
81 {
82 ? ? //默認(rèn)為NO,這里設(shè)置為YES
83 ? ? return YES;
84 }
85 @end