UIGesture手勢,圖片的縮放和旋轉
#import@interface ViewController : UIViewController { //定義一個縮放手勢,用來對視圖可以進行放大或者縮小 //Pinch:捏合手勢 UIPinchGestureRecognizer * _pinchGes; //定義一個旋轉手勢,主要用來旋轉圖像視圖 UIRotationGestureRecognizer * _rotGes; } @end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage * image =[UIImage imageNamed:@"17_3.png"];
UIImageView * iView = [[UIImageView alloc]initWithImage:image];
iView.frame=CGRectMake(50, 80, 200, 300);
//開啟交互功能
iView.userInteractionEnabled=YES;
[self.view addSubview:iView];
//創建一個捏合手勢
//p1:事件對象的擁有者
//p2:事件響應函數
_pinchGes =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAct:)];
//將捏合手勢添加到視圖中
[iView addGestureRecognizer:_pinchGes];
//創建旋轉手勢
_rotGes =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotAct:)];
[iView addGestureRecognizer:_rotGes];
//設置手勢的代理
_rotGes.delegate=self;
_pinchGes.delegate=self;
}
//是否可以同時相應兩個手勢
//如果返回值為YES:可以同時相應
//如果返回值為NO:不可以同時相應
-(BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
//旋轉手勢函數
-(void)rotAct:(UIRotationGestureRecognizer*)rot{
UIImageView* iView = (UIImageView*)rot.view;
//計算旋轉的變換矩陣並且賦值
iView.transform = CGAffineTransformRotate(iView.transform,rot.rotation);
//選擇角度清零
rot.rotation=0;
}
//捏合手勢事件函數實現
-(void)pinchAct:(UIPinchGestureRecognizer*)pinch{
//獲取監控圖像視圖
UIImageView * iView =(UIImageView*)pinch.view;
//對圖像視圖對象進行矩陣變換計算並賦值
//transform:表示圖形學中的變換矩陣
//CGAffineTransformScale:通過縮放的方式產生一個新矩陣
//參數一:原來的矩陣
//參數二:x方向的縮放比例
//參數三:y方向的縮放比例
//返回值是新的縮放後的矩陣變換
iView.transform = CGAffineTransformScale(iView.transform, pinch.scale, pinch.scale);
//將縮放值歸位為單位值
//scale=1:原來的大小
//scale<1:縮小效果
//scale>1:放大效果
pinch.scale=1;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end