本字学习内容:
1.UIGesture高级手势类型
2.UIGesture高级手势属性
3.UIGesture高级手势用法
【UIGesture基础】
1.UIPinchGesture和UIRotationGesture手势属性
view trasform:变换矩阵属性
RotGesture rotation:旋转属性
PinchGesture scale:缩放属性
CGAffileTransformScale();缩放变换函数
CGAffileTransformRotate();旋转变换函数
【viewController.h】
#import
@interface ViewController:UIViewController
//定义一个缩放手势,用来对视图可以进行放大缩小
//Pinch:捏合手势
UIPinchGestureRecognizer* _pinchGes;
//定义一个旋转手势,主要用户旋转图像和视图
UIRotationGestureRecognizer* _rotGes;
}
@end
【ViewController.m】
-(void)viewDidLoad{
[super viewDidLoad];
//加载图像
UIImage( image=[UIImage imageNamed:"xx.jpg"];
UIImageView* iview=[[UIImageView alloc]initWithImage:image];
iview.frame=CGRectMake(50,80,200,320);
//开启交互功能
iView.userInteractionEnabled=YES;
[self.view addSubview:iView];
//创建一个捏合手势,参数1:事件对象的拥有者,参数2:事件响应函数
_pinchGes=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAct:)];
//将捏合手势添加到视图中
[iView addGestureRecognizer:_pinchGes];
//创建旋转手势
_rogGes=[[UIRotationGestureReconizer alloc]initWithTarget:self acion:@selector(rotAct:){
[iView addGestureRecognizer:_rogGes];
//设置手势代理,旋转与捏合可以同时操作
_rotGes.delegate=self;
_pinchGes.delegate=self;
}
//是否可以同时响应两个手势,如果返回YES:可以同时响应,如果返回为NO:不可以同时响应
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer
*)otherGestureRecognizer
{
return YES;
}
-(void)pinckAct:(UIPinchGestureRecognizer*)rot{
UIImageView* iView=(UIImageView*) rot.view;
//计算旋转的变抱紧矩阵并且赋值
iView.tranform=CGAffineTransformRotate(iView.transform,rot.rotation);
//选择角度清零
rot.rotation=0;
}
//捏合事件函数实现
-(void)pinchAct:(UIPinchGestureRecognizer*)pinch{
//获取监控图像视图,参数:捏合手势对象
UIImageView* iView=(UIImageView*) pinch.view;
//对图像视图对象进行矩阵变换计算并赋值,transform:表示图形学中的变换矩阵,CGAffineTransformScale:通过缩放的方式产生一个新矩阵,参数1:原来的矩阵,参数2:X方向的缩放比例,参数3:Y方向的缩放比例,返回值是新的缩放后的矩阵变放
iView.transform=CGAffineTransformScale(iView.transform,pinch.scale,pinch.scale);
//将缩放值归位为单位值,scale=1表示原来大小,Scale<1:缩小效果,Scale>1:放大效果
pinch.scale=1;
}