IOS开发之手势UIGestureRecognizer

来源:互联网 发布:卫龙淘宝辣条直播视频 编辑:程序博客网 时间:2024/06/05 15:23
     在IOS开发中,除了用 touchesBegan 、touchesMoved、touchesEnded 这组触摸方法来控制使用者的手指触控外,也可以用 UIGestureRecognizer 的衍生类別来进行判断。用 UIGestureRecognizer的好处在于有现成的手势,开发者不用自己计算手指移动轨迹。UIGestureRecognizer的衍生类別有以下几种: 
     UITapGestureRecognizer //创建单击手势
     UIPinchGestureRecognizer //创建捏合手势
     UIRotationGestureRecognizer //创建旋转手势
     UISwipeGestureRecognizer //创建轻扫手势
     UIPanGestureRecognizer //创建拖拽手势
     UILongPressGestureRecognizer //创建长按手势

1、UITapGestureRecognizer //创建单击手势

- (void)viewDidLoad

{

   [superviewDidLoad];

    self.viewtest=[[UIViewalloc]initWithFrame:CGRectMake(50,20, 100,100)];//创建一个UIView视图

   self.viewtest.backgroundColor=[UIColorredColor];//给视图设置红色背景

   [self.viewaddSubview:self.viewtest];//添加当前视图

   UITapGestureRecognizer *tap=[[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(changeColor:)];//创建点击手势并设置动作用来改变UIView视图的颜色

   tap.numberOfTapsRequired=1;//点击手势次数为一次

   (如果要实现双击效果,就让点击次数numberOfTapsRequired=2

   [self.viewtestaddGestureRecognizer:tap];//UIView视图添加单击手势

}

//实现单击手势

-(void)changeColor:(UITapGestureRecognizer*)sender

{

   self.viewtest.backgroundColor=[UIColorgreenColor];//点击视图让红色背景变成绿色

}

IOS开发之手势UIGestureRecognizer IOS开发之手势UIGestureRecognizer

2、UILongPressGestureRecognizer //创建长按手势

 -(void)viewDidLoad

{

   [superviewDidLoad];

   self.viewtest=[[UIViewalloc]initWithFrame:CGRectMake(50,20, 100,100)];//创建一个UIView视图

   self.viewtest.backgroundColor=[UIColorredColor];//给视图设置红色背景

   [self.viewaddSubview:self.viewtest];//添加当前视图

   UILongPressGestureRecognizer*longP=[[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longpress:)];

   [self.viewtestaddGestureRecognizer:longP];//UIView视图添加长按手势

}

//实现长按手势

-(void)longpress:(UILongPressGestureRecognizer*)sender

{

   self.viewtest.backgroundColor=[UIColorgreenColor];//点击视图让红色背景变成绿色

}

3、UISwipeGestureRecognizer //创建轻扫手势

- (void)viewDidLoad

{

   [superviewDidLoad];

   self.viewtest=[[UIViewalloc]initWithFrame:CGRectMake(50,20,250,100)];//创建一个UIView视图

   self.viewtest.backgroundColor=[UIColorredColor];//给视图设置红色背景

   [self.viewaddSubview:self.viewtest];//添加当前视图

    UISwipeGestureRecognizer*swip=[[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swip:)];

   swip.direction=UISwipeGestureRecognizerDirectionLeft;//手势方向向左

    系统提供了四种手势方向,上下左右

    UISwipeGestureRecognizerDirectionLeft;//手势方向向左

     UISwipeGestureRecognizerDirectionRight;//手势方向向右

     UISwipeGestureRecognizerDirectionUp;//手势方向向上

     UISwipeGestureRecognizerDirectionDown;//手势方向向下

    

   [self.viewtestaddGestureRecognizer:swip];

}

-(void)swip:(UISwipeGestureRecognizer*)sender

{

   self.viewtest.backgroundColor=[UIColorgreenColor];//向左滑动手指让红色背景变成绿色

}

4、UIPanGestureRecognizer //创建拖拽手势

- (void)viewDidLoad

{

   [superviewDidLoad];

   self.viewtest=[[UIViewalloc]initWithFrame:CGRectMake(50,20,100,100)];//创建一个UIView视图

   self.viewtest.backgroundColor=[UIColorredColor];//给视图设置红色背景

   [self.viewaddSubview:self.viewtest];//添加当前视图

    UIPanGestureRecognizer*pan=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(pan:)];

   [self.viewtestaddGestureRecognizer:pan];

}

CGPoint startPoint;

-(void)pan:(UIPanGestureRecognizer*)sender

{

   startPoint=self.viewtest.center;//视图起始点

   CGPoint endPoint=[sender locationInView:self.view];//终止点(在父视图self.view上)

   self.viewtest.transform=CGAffineTransformMakeTranslation(endPoint.x-startPoint.x,endPoint.y-startPoint.y);//拖拽视图移动到的地方

}

5、UIPinchGestureRecognizer //创建捏合手势

- (void)viewDidLoad

{

   [superviewDidLoad];

   self.viewtest=[[UIViewalloc]initWithFrame:CGRectMake(130,200,100,100)];//创建一个UIView视图

   self.viewtest.backgroundColor=[UIColorredColor];//给视图设置红色背景

   [self.viewaddSubview:self.viewtest];//添加当前视图

   UIPinchGestureRecognizer*pinch=[[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(pinch:)];

   [self.viewtestaddGestureRecognizer:pinch];

}

-(void)pinch:(UIPinchGestureRecognizer*)sender

{

  self.viewtest.transform=CGAffineTransformMakeScale(sender.scale,sender.scale);//两个手指操作放大缩小

}

6、UIRotationGestureRecognizer //创建旋转手势

- (void)viewDidLoad

{

   [superviewDidLoad];

    self.viewtest=[[UIViewalloc]initWithFrame:CGRectMake(130,200,100,100)];//创建一个UIView视图

   self.viewtest.backgroundColor=[UIColorredColor];//给视图设置红色背景

   [self.viewaddSubview:self.viewtest];//添加当前视图

    UIRotationGestureRecognizer*rotation=[[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotation:)];

   [self.viewtestaddGestureRecognizer:rotation];

}

-(void)rotation:(UIRotationGestureRecognizer*)sender

{

   //修改当前视图的矩阵,传入一个变化的角度值。

   self.viewtest.transform=CGAffineTransformMakeRotation(sender.rotation);

}

0 0