二十四桥明月夜

一个没有名字的网工

UIGestureRecognizer手势操作

UIGestureRecognizer类手势:

iOS一共提供了6种类型的手势操作,分别为:点击、捏合、旋转、滑动、拖动、长按。手势需要添加到UIView类以及其子类之上,同时每个UIView可以添加多个手势。

6种手势分别为:

手势创建的方法:

创建一个UIGestureRecognizer子类对象需要有4个步骤:

  • 创建一个UIView类的对象;
  • 创建一个手势类对象,并使用- initWithTarget:action:方法进行对象初始化,设置当手势事件发生时,调用的方法;
  • 为UIView对象添加手势,使用 addGestureRecognizer:方法;
  • 实现手势事件发生时所调用的方法。

常用的手势属性及方法:

1.初始化手势:

– (instancetype)initWithTarget:(nullable id)target action:(nullable SEL)action;//初始化手势对象,并设置手势发生时调用的方法.

2.获取手势点击的位置

– (CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(nullable UIView*)view; // 获取手势点击的位置;

3.获取手势点击的状态和视图

@property(nonatomic,readonly) UIGestureRecognizerState state;

其中:常用的UIGestureRecognizerState有以下四种:

  • UIGestureRecognizerStateBegan:开始手势事件
  • UIGestureRecognizerStateEnded:结束手势事件
  • UIGestureRecognizerStateChanged:手势位置发生变化
  • UIGestureRecognizerStateFailed:无法识别的手势
@property(nullable, nonatomic,readonly) UIView *view; //手势事件对应的视图对象

下面简要介绍下各个手势的属性:
(一)、轻拍手势
每一个手势识别器的用法都差不多,比如UITapGestureRecognizer的使用步骤如下:
(1)创建手势识别器对象
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
(2)设置手势识别器对象的具体属性
// 连续轻拍2次
tap.numberOfTapsRequired = 2;
// 需要2根手指一起触摸
tap.numberOfTouchesRequired = 2;
(3)添加手势识别器到对应的view上
[self.iconView addGestureRecognizer:tap];
(4)监听手势的触发
[tap addTarget:self action:@selector(tapIconView:)];
属性介绍:
numberOfTouchesRequired   //需要多少根手指一起轻拍(默认为1根)
numberOfTapsRequired    //需要轻拍多少下(默认为1)
 
 
 
(三)、旋转手势
  UIRotationGestureRecognizer手势识别器,就像名称一样,这个类能用来监听和捕获旋转的手势,能帮助你创建出更直观的图形用户界面,比如一种场景,当你的应用中有一个展示图片的视图,用户需要通过旋转图片来调整图片的方向。 
        UIRotationGestureRecognizer这个类有一个rotation的属性,这个属性可以用来设置旋转的方向和旋转的弧度。旋转是从手 指的初始位置(UIGestureRecognizerStateBegan)到最终位置 (UIGestureRecognizerStateBegan)决定的。 
为了对继承自UIView的UI元素进行旋转,你可以将旋转手势识别器的rotation属性传递给CGAffineTransformMakeRotation方法,以制作一个仿射转场



posted @ 2016-05-18 21:24  24桥明月夜  阅读(329)  评论(0编辑  收藏  举报