一、拖拽 範例程式碼: 複製代碼 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 @end15 16 @implementation YYViewController17 18 - (void)viewDidLoad19 {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*)pan29 {30 //以控制器上的view的左上方為座標原點31 CGPoint point=[pan locationInView:pan.view];32 NSLog(@"拖拽事件");33 NSLog(@"擷取到的觸摸點的位置為:%@",NSStringFromCGPoint(point));34 35 CGPoint point1=[pan translationInView:pan.view];36 NSLog(@"拖拽事件1");37 NSLog(@"擷取到的觸摸點的位置為:%@",NSStringFromCGPoint(point1));38 39 //手指拖動,讓自訂的view也跟著手指移動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複製代碼 注意點:1.注意拖拽事件的位移疊加。 注意數學遞增性,需要在每次調用完之後進行清空處理。 2.注意擷取的點是以手指按下的點為原點的。CGPoint point1=[pan translationInView:pan.view]; //以控制器上的view的左上方為座標原點 CGPoint point=[pan locationInView:pan.view]; 二、旋轉 範例程式碼: 複製代碼 1 // 2 // YYViewController.m 3 // 07-旋轉 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 @end15 16 @implementation YYViewController17 18 - (void)viewDidLoad19 {20 [super viewDidLoad];21 22 //旋轉23 //建立手勢辨識器(旋轉)24 UIRotationGestureRecognizer *gesture=[[UIRotationGestureRecognizer alloc]init];25 //添加手勢辨識器26 [self.iconView addGestureRecognizer:gesture];27 //監聽28 [gesture addTarget:self action:@selector(gestureView:)];29 }30 31 -(void)gestureView:(UIRotationGestureRecognizer*)gesture32 {33 34 //旋轉的弧度:gesture.rotation35 NSLog(@"旋轉事件,旋轉的弧度為:%1f",gesture.rotation);36 37 //讓圖片跟隨手指一起旋轉38 //每次從最初的位置開始39 // self.iconView.transform=CGAffineTransformMakeRotation(gesture.rotation);40 41 //在傳入的transform的基礎上旋轉42 //在之前的基礎上,讓圖片跟隨一起旋轉(去掉自動布局)43 //注意問題:以風火輪的速度旋轉44 self.iconView.transform=CGAffineTransformRotate(self.iconView.transform, gesture.rotation);45 //將旋轉的弧度清零46 //(注意不是將圖片旋轉的弧度清零,而是將當前手指旋轉的弧度清零)47 gesture.rotation=0;48 }49 @end複製代碼 注意點: 1.imageview預設為不可互動的,且不支援多點觸控,需要在storyboard中勾選這兩項。 2.旋轉的度數疊加 3.旋轉 將旋轉弧度清零之後,每次調用又從零開始。 三、縮放 複製代碼 1 // 2 // YYViewController.m 3 // 07-旋轉 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 ()<UIGestureRecognizerDelegate>12 @property (weak, nonatomic) IBOutlet UIImageView *iconView;13 14 @end15 16 @implementation YYViewController17 18 - (void)viewDidLoad19 {20 [super viewDidLoad];21 [self pinchTest];22 [self gestureTest];23 }24 25 -(void)pinchTest26 {27 //縮放28 UIPinchGestureRecognizer *pinch=[[UIPinchGestureRecognizer alloc]init];29 [self.iconView addGestureRecognizer:pinch];30 [pinch addTarget:self action:@selector(pinchView:)];31 32 //設定代理33 pinch.delegate=self;34 }35 36 -(void)pinchView:( UIPinchGestureRecognizer* )pinch37 {38 //縮放的比例 pinch.scale;39 NSLog(@"縮放:%f",pinch.scale);40 //對圖片進行縮放41 // self.iconView.transform=CGAffineTransformMakeScale(pinch.scale,pinch.scale);42 //在已有的基礎上對圖片進行縮放43 self.iconView.transform=CGAffineTransformScale(self.iconView.transform, pinch.scale, pinch.scale);44 //清零45 pinch.scale=1.0;46 }47 -(void)gestureTest48 {49 //旋轉50 //建立手勢辨識器(旋轉)51 UIRotationGestureRecognizer *gesture=[[UIRotationGestureRecognizer alloc]init];52 //添加手勢辨識器53 [self.iconView addGestureRecognizer:gesture];54 //監聽55 [gesture addTarget:self action:@selector(gestureView:)];56 57 //設定代理58 gesture.delegate=self;59 }60 -(void)gestureView:(UIRotationGestureRecognizer*)gesture61 {62 63 //旋轉的弧度:gesture.rotation64 NSLog(@"旋轉事件,旋轉的弧度為:%1f",gesture.rotation);65 66 //讓圖片跟隨手指一起旋轉67 //每次從最初的位置開始68 // self.iconView.transform=CGAffineTransformMakeRotation(gesture.rotation);69 70 //在傳入的transform的基礎上旋轉71 //在之前的基礎上,讓圖片跟隨一起旋轉(去掉自動布局)72 //注意問題:以風火輪的速度旋轉73 self.iconView.transform=CGAffineTransformRotate(self.iconView.transform, gesture.rotation);74 //將旋轉的弧度清零75 //(注意不是將圖片旋轉的弧度清零,而是將當前手指旋轉的弧度清零)76 gesture.rotation=0;77 }78 79 //實現代理方法80 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer81 {82 //預設為NO,這裡設定為YES83 return YES;84 }85 @end