IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)

原创 2015年07月09日 16:03:54

IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)


点击        UITapGestureRecognizer

长按        UILongPressGestureRecognizer

轻扫        UISwipeGestureRecognizer

拖拽        UIPanGestureRecognizer

旋转        UIRotationGestureRecognizer

捏合缩放 UIPinchGestureRecognizer



详细代码如下:


#import "ViewController.h"

@interface ViewController () <UIGestureRecognizerDelegate>
{
    UIView * _view;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //创建视图
    _view=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
    _view.backgroundColor=[UIColor blueColor];
    _view.center=self.view.center;
    [self.view addSubview:_view];
    
    
//点击
    UITapGestureRecognizer * tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapClick)];
    
    //当前需要点击次数
    tap.numberOfTapsRequired=2;
    //[tap setNumberOfTapsRequired:2];    //同上
    
    //设置当前出发时间需要的手指数
    tap.numberOfTouchesRequired=2;   // option键  模拟手指
    //[tap setNumberOfTouchesRequired:2];   //同上
    
    [_view addGestureRecognizer:tap];
    
//长按
    UILongPressGestureRecognizer * longPress=[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressClick)];
    
    //在长按过程中移动10个单位也算长按
    longPress.allowableMovement=10;
    //[longPress setAllowableMovement:10];     //同上
    
    //长按的最短时间
    longPress.minimumPressDuration=2;
    [_view addGestureRecognizer:longPress];
    
    
    
//轻扫
    UISwipeGestureRecognizer * swipe=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction)];
    
    //往右边的方向 ——>
    swipe.direction=UISwipeGestureRecognizerDirectionRight;
    [_view addGestureRecognizer:swipe];
   
    
//轻扫
    UISwipeGestureRecognizer * swipe2=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction2)];
    
    //往左边的方向 <——
    swipe2.direction=UISwipeGestureRecognizerDirectionLeft;
    [_view addGestureRecognizer:swipe2];
    
//轻扫
    UISwipeGestureRecognizer * swipe3=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction3)];
    
    //往上边的方向 ⬆️
    swipe3.direction=UISwipeGestureRecognizerDirectionUp;
    [_view addGestureRecognizer:swipe3];
    
    
//轻扫
    UISwipeGestureRecognizer * swipe4=[[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(swipeAction4)];
    
    //往下边的方向 ⬇️
    swipe4.direction=UISwipeGestureRecognizerDirectionDown;
    [_view addGestureRecognizer:swipe4];
    
//拖拽
    UIPanGestureRecognizer * pan=[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];
    
    [_view addGestureRecognizer:pan];
    
    
//旋转
    UIRotationGestureRecognizer * rotation=[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotation:)];
    rotation.delegate=self;
    [_view addGestureRecognizer:rotation];
    
    
//捏合缩放
    UIPinchGestureRecognizer * pinch=[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinch:)];
    pinch.delegate=self;
    [_view addGestureRecognizer:pinch];
   
}


#pragma mark - 点击
- (void) tapClick
{
    NSLog(@"点击");
}
#pragma mark - 长按
- (void)longPressClick
{
    NSLog(@"长按");
}

#pragma mark - 向右滑
- (void) swipeAction
{
    NSLog(@"right");
}
#pragma mark - 向左滑
- (void) swipeAction2
{
    NSLog(@"left");
}
#pragma mark - 向上滑
- (void) swipeAction3
{
    NSLog(@"up");
}
#pragma mark - 向下滑
- (void) swipeAction4
{
    NSLog(@"down");
}

#pragma mark - 拖拽移动
- (void) panAction:(UIPanGestureRecognizer *) pan
{
    //获取移动的大小
    CGPoint point=[pan translationInView:pan.view];
    
    //更改视图的中心点坐标
    CGPoint points=_view.center;
    points.x+=point.x;
    points.y+=point.y;
    _view.center=points;
    
    //每次都清空一下,消除坐标叠加
    [pan setTranslation:CGPointZero inView:pan.view];
}

#pragma mark - 旋转
- (void) rotation:(UIRotationGestureRecognizer *) rote
{
    //获取当前旋转的度数
    CGFloat rotation=rote.rotation;
    
    //通过仿射变换实现旋转
    _view.transform=CGAffineTransformRotate(_view.transform, rotation);
    //防止旋转叠加,清零
    rote.rotation=0;
    
}

#pragma mark - 缩放捏合
- (void) pinch:(UIPinchGestureRecognizer *) pinch
{
    //获取比例
    CGFloat scale=pinch.scale;
    
    //通过仿射变换实现缩放
    _view.transform=CGAffineTransformScale(_view.transform, scale, scale);
    
    //防止比例叠加
    pinch.scale=1;
    
    
}

#pragma mark - 代理方法实现旋转 + 缩放捏合 可同时进行
- (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end



需要注意点:

                    1.键盘上的option键模拟手指


             2.对同一个view来说,拖拽时,向左向右向上向下的手势失效。


【IOS】使用手势对UIImageView进行缩放、旋转和移动

因为项目需要,需要对图片进行一些操作。本着拿来主义的原则~上网找了方法。 但是发现网上很多实现,要么过于复杂,要么不够完善。 终于找到一篇比较好的文章。 参考文章: http://apluck....
  • Crazy_Frog
  • Crazy_Frog
  • 2013年03月12日 16:12
  • 33549

iOS中单双击,滑动和捏合手势的实现原理

在iOS中,虽然系统已经封装好了单击,双击,滑动,捏合手势的方法,但这次简单讨论一下这些手势的内部实现原理 1,创建视图,所有的手势都在该视图上有效 - (void)viewDidLoad { ...
  • u013283787
  • u013283787
  • 2015年08月11日 15:31
  • 516

iOS常见手势总结-单击、双击、捏合、旋转、移动、清扫、长按

- (void)viewDidLoad {     [super viewDidLoad];     // Do any additional setup after loading the v...
  • u014220518
  • u014220518
  • 2016年01月07日 18:02
  • 973

#iOS开发笔记#UIImageView实现拖动,放大/缩小,旋转

UIImageView是iOS上最基本的图片显示控件,但默认情况下是不支持拖动,放大缩小等功能的。后来在stackoverflow上查找到一种很简单的方法,加上本人自己的理解,步骤整理如下:...
  • Bryster
  • Bryster
  • 2015年01月08日 11:54
  • 4151

IOS代码添加控件,控件移动,放大,缩小,旋转

控件移动,放大,缩小,旋转 1,代码添加控件 例如:
  • dwt1220
  • dwt1220
  • 2014年05月24日 22:02
  • 12166

ios 图片拖拽,捏,双击放大缩小,以及保存到相册

图片拖拽,放大缩小原来是可以不用自己写算法的,直接用UIscrollView即可实现。 保存相册就比较简单了。 比较麻烦的地方: 捏,双击等动作形成的放大、缩小效果需要准确定位。 ...
  • u013756604
  • u013756604
  • 2016年11月15日 16:37
  • 833

IOS图片拖拽.旋转.缩放

iOS上实现图片的拖拽,旋转,缩放还是比较简单的,将手势变化转换成矩阵变换就可以实现了 ### 涉及的知识点: 1.拖拽手势 UIPanGestureRecognizer 2.捏合手势 UIPinch...
  • luguogege
  • luguogege
  • 2016年01月30日 14:45
  • 1511

ios UI 旋转_缩放_拖拽

  • 2015年05月07日 13:48
  • 1.56MB
  • 下载

IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)

IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放) 点击 UITapGestureRecognizer 长按 UILongPressGestureRecogniz...
  • qq_27364431
  • qq_27364431
  • 2015年07月09日 16:03
  • 1009

iOS 之图片拖拽、捏合、双击缩放以及保存到相册

1.图片拖拽,使用UIScrollView就可以实现,上面添加一个UIImageView 2.捏合和双击缩放通过手势实现,难点在于缩放效果的准确定位 3.保存问题比较简单 下面直接上代码: ....
  • codeblshi
  • codeblshi
  • 2015年01月05日 17:08
  • 645
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:IOS 手势学习(点击,长按,轻扫,拖拽,旋转,捏合缩放)
举报原因:
原因补充:

(最多只允许输入30个字)