iOS关于手势UISwipeGestureRecognizer的基本用法和属性

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

    
    /*********************滑动手势*************************/
    //创建手势名数组
    UISwipeGestureRecognizerDirection num[4] = {
        UISwipeGestureRecognizerDirectionRight,
        UISwipeGestureRecognizerDirectionLeft,
        UISwipeGestureRecognizerDirectionUp,
        UISwipeGestureRecognizerDirectionDown
    };
    //创建四个方向的滑动手势
    for (int i = 0; i < 4; i++) {
        //创建一个滑动手势
        UISwipeGestureRecognizer *swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];
        swipe.direction = num[i];
        //给当前界面增加滑动手势
        [self.view addGestureRecognizer:swipe];
    }
    /*********************点击手势*************************/
    //创建一个点击手势
    UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
    //增加手势之后 一旦点击图片那么就会触发事件 self调用tap:
    //点击手势的范围就在图片范围内
    
    //设置点击的次数
    //1.单击 2.双击
    tap.numberOfTapsRequired = 2;
    
    //设置手指个数
    tap.numberOfTouchesRequired = 2;
    // 按住option 就可以出现两个圆圈 表示两只手指
    
    //给_imageView增加手势
    UIImageView *imageView = [UIImageView new];
    [imageView addGestureRecognizer:tap];
    
    //获取手势所在视图
    tap.UIView;
    
    /*********************捏合手势*************************/
    //创建一个捏合手势
    UIPinchGestureRecognizer * pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
    
    //手指收缩 缩小图片 放大的时候放大图片
    _imageView.transform = CGAffineTransformScale(_imageView.transform, pinch.scale, pinch.scale);
    
    //重新设置 手势比例
    pinch.scale = 1;
    /*********************旋转手势*************************/
    
    //创建一个旋转手势
    UIRotationGestureRecognizer * rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotation:)];
    
    //根据手势的旋转弧度来改变
    _imageView.transform = CGAffineTransformRotate(_imageView.transform, rotation.rotation);
    
    //重新设置 手势比例
    rotation.rotation = 0;
    /*********************拖动手势*************************/
    
    //创建一个旋转手势
    UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    
    //获取当前手势的偏移量(相对于某个视图的)
    //手势 要和图片的参考物相同的
    CGPoint offset = [pan translationInView:self.view];
    
    //加上偏移量 那么图片跟手势一起移动
    _imageView.center = CGPointMake(_imageView.center.x+offset.x, _imageView.center.y+offset.y);
    
    //重新设置 偏移量//重置为0 (都要相对于当前的 下次要从0开始)
    [pan setTranslation:CGPointZero inView:self.view];
    /*********************长按手势*************************/
    
    //创建一个旋转手势
    UILongPressGestureRecognizer * longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(press:)];
    
    //长按手势会触发两次,无法设置是否触发,但可以在触发函内判断什么时候执行
    //长按刚开始一次 长按结束的时候一次,并且在手指移动的时候每一栋一次触发一次
    //长按手势刚开始的时候
    press.state = UIGestureRecognizerStateBegan;
    
    //手势结束的状态
    press.state = UIGestureRecognizerStateEnded;
    
    //手势改变
    press.state = UIGestureRecognizerStateChanged;
    /*********************是否允许两个手势同时有效*************************/
    
    //(允许两个手势同时触发要遵守UIGestureRecognizerDelegate协议)
    //需要同时生效的手势必须都要设置代理
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
        return YES;
    }