zoukankan      html  css  js  c++  java
  • 手势

    手势识别器是对触摸事件做了封装,手势识别器本身起到 了识别作用。
    手势识别器是iOS中比较抽象的一个类,用于识别一个手 势,所谓手势:有规律的触摸。
     
    手势分类:
    轻拍手势、长按手势
    平移手势、轻扫手势
    缩放手势、旋转手势
    屏幕边界平移手势
     
    系统提供的⼿势识别器这个抽象⽗类我们是不会直接使⽤的,⽽是根据需 求使⽤特定的⼿势识别器创建对象,系统所提供的⼿势类型如下所⽰:
     
    1.UITapGestureRecognizer是轻拍⼿势识别器,能识别轻拍操作
    2.UILongPressGestureRecognizer是长按⼿势识别器,能识别长按操作
    3.UIRotationGestureRecognizer是旋转⼿势识别器,能识别旋转操作
    4.UIPinchGestureRecognizer是捏合⼿势识别器,能识别捏合操作
    5.UIPanGestureRecognizer是平移⼿势识别器,能识别拖拽操作
    6.UISwipeGestureRecognizer是轻扫⼿势识别器,能识别拖拽操作
    7.UIScreenEdgePanGestureRecognizer是屏幕边缘轻扫识别器
     
    应用步骤:
    1.创建UIXXXGestureRecognizer对象,使⽤initWithTarget:action:⽅法
    2.配置要识别的⼿势的相关信息
    3.将⼿势添加到某个视图上
    4.实现⼿势识别器⾥定义的⽅法
     
    transform是view的⼀个重要属性,它在矩阵层⾯上改变view的显⽰状态, 能实现view的缩放、旋转、平移等功能
    平移:CGAffineTransformMakeTranslation
    缩放:CGAffineTransformMakeScale
    旋转:CGAffineTransformMakeRotation
     
    - (void)viewDidLoad {
        [super viewDidLoad];
       
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 50, 320, 500)];
        imageView.image = [UIImage imageNamed:@"love.jpg"];
        imageView.userInteractionEnabled = YES;
       
        //1、创建满足需求的手势,在创建时关联手势触发时的方法
        //2、配置手势的相关属性
        //3、将手势添加到需要执行操作的视图上面
        //4、实现手势方法,当触摸发生,手势识别器识别到相对应的触摸时,就会执行关联的方法。
       
        //轻拍手势 UITapGestureRecognizer
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)];
       
        //设置属性
        //1、触发手势的手指个数
        tap.numberOfTouchesRequired = 1;
        //2、触发手势的轻拍次数
        tap.numberOfTapsRequired = 2;
        //让imageView添加轻拍手势
        [imageView addGestureRecognizer:tap];
        [tap release];
       
        //轻扫手势 UISwipeGestureRecognizer
        UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeAction:)];
       
        //指定清扫的方向
        swipe.direction = UISwipeGestureRecognizerDirectionRight | UISwipeGestureRecognizerDirectionLeft;
        [imageView addGestureRecognizer:swipe];
        [swipe release];
       
       
        //长按手势 UILongPressGestureRecognizer
        UILongPressGestureRecognizer *longpress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longpressAction:)];
       
        //长按手势触发的最短时间,默认是0.5
        longpress.minimumPressDuration = 3.0;
        [imageView addGestureRecognizer:longpress];
        [longpress release];
     
        //缩放 UIPinchGestureRecognizer
        UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
        [imageView addGestureRecognizer:pinch];
        [pinch release];
       
        //旋转 UIRotationGestureRecognizer
        UIRotationGestureRecognizer *rotate = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateAction:)];
        [imageView addGestureRecognizer:rotate];
        [rotate release];
       
        //平移 UIPanGestureRecognizer
        UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
        [imageView addGestureRecognizer:pan];
        [pan release];
       
        [self.view addSubview:imageView];
       
        [imageView release];
       
        // Do any additional setup after loading the view.
    }
     
    - (void)panAction:(UIPanGestureRecognizer *)pan {
        //获取想要平移的视图
        UIImageView *imageView = (UIImageView *)pan.view;
       
        CGPoint p = [pan translationInView:imageView];
       
        //改变视图的形变属性
        imageView.transform = CGAffineTransformTranslate(imageView.transform, p.x, p.y);
       
        [pan setTranslation:CGPointZero inView:imageView];
    }

    - (void)rotateAction:(UIRotationGestureRecognizer *)rotate {
        //获取想要旋转的视图
        UIImageView *imageView = (UIImageView *)rotate.view;
       
        //改变imageView的形变属性
        imageView.transform = CGAffineTransformRotate(imageView.transform, rotate.rotation);
        rotate.rotation = 0;
       
    //    imageView.transform =     CGAffineTransformMakeRotation(rotate.rotation);
    }

    - (void)pinchAction:(UIPinchGestureRecognizer *)pinch {
        //获取要进行缩放的视图
        UIImageView *imageView = (UIImageView *)pinch.view;
       
        //改变imageView的形变属性
        imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale);
        pinch.scale = 1;
       
    //    imageView.transform = CGAffineTransformMakeScale(pinch.scale, pinch.scale);
    }

    - (void)longpressAction:(UILongPressGestureRecognizer *)longpress {
        //获取手势关联的视图
        UIImageView *imageView = (UIImageView *)longpress.view;
       
        //修改图片
        [imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
    }

    - (void)swipeAction:(UISwipeGestureRecognizer *)swipe {
        //获取手势关联的视图
        UIImageView *imageView = (UIImageView *)swipe.view;
       
        //修改图片
        [imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
    }

    - (void)tapAction:(UITapGestureRecognizer *)tap {
        //获取手势关联的视图
        UIImageView *imageView = (UIImageView *)tap.view;
       
        //修改图片
        [imageView setImage:[UIImage imageNamed:@"mao.jpg"]];
    }
  • 相关阅读:
    html5的键盘事件
    阻止滑屏
    JS 复制到黏贴板上
    最新拖动原理
    方法——<37>
    验证——正则<37>
    《高级程序设计》 9 客户端检测
    《高级程序设计》8 BOM
    《高级程序设计》7 函数表达式
    《高级程序设计》6 面向对象的程序设计
  • 原文地址:https://www.cnblogs.com/Walking-Jin/p/5210798.html
Copyright © 2011-2022 走看看