美文网首页
IOS开发 UIGesture高级手势

IOS开发 UIGesture高级手势

作者: 奔跑的小小鱼 | 来源:发表于2017-05-12 22:30 被阅读48次

    本字学习内容:

    1.UIGesture高级手势类型

    2.UIGesture高级手势属性

    3.UIGesture高级手势用法

    【UIGesture基础】

    1.UIPinchGesture和UIRotationGesture手势属性

    view trasform:变换矩阵属性

    RotGesture rotation:旋转属性

    PinchGesture scale:缩放属性

    CGAffileTransformScale();缩放变换函数

    CGAffileTransformRotate();旋转变换函数


    【viewController.h】

    #import<UIKit/UIKit.h>

    @interface ViewController:UIViewController<UIGestureRecognizerDelegate>{

    //定义一个缩放手势,用来对视图可以进行放大缩小

    //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;

    }

    相关文章

      网友评论

          本文标题:IOS开发 UIGesture高级手势

          本文链接:https://www.haomeiwen.com/subject/nbfntxtx.html