在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等。这里做一下总结,详见代码。

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. UIImage *image = [UIImage imageNamed:@"018.png"];
  5. UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
  6. imageView.frame = CGRectMake(, , , );
  7. [self.view addSubview:imageView];
  8.  
  9. //开启用户交互
  10. imageView.userInteractionEnabled = YES;
  11. //缩放手势识别器
  12. UIPinchGestureRecognizer *pinGes = [[UIPinchGestureRecognizer alloc] init];
  13. pinGes.delegate = self;
  14.  
  15. [pinGes addTarget:self action:@selector(pinGes:)];
  16. [imageView addGestureRecognizer:pinGes];
  17.  
  18. //旋转手势识别器
  19. UIRotationGestureRecognizer *rotaGes = [[UIRotationGestureRecognizer alloc] init];
  20. rotaGes.delegate = self;
  21. imageView.userInteractionEnabled = YES;
  22. [rotaGes addTarget:self action:@selector(rota:)];
  23. [imageView addGestureRecognizer:rotaGes];
  24.  
  25. //移动手势识别器
  26. UIPanGestureRecognizer *panGes = [[UIPanGestureRecognizer alloc] init];
  27. [panGes addTarget:self action:@selector(panGes:)];
  28. [imageView addGestureRecognizer:panGes];
  29.  
  30. //长按手势识别器
  31. UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] init];
  32.  
  33. //设置长按时间标准(默认时间为0.5秒)
  34. longPress.minimumPressDuration = 1.0;
  35. [longPress addTarget:self action:@selector(longPress:)];
  36. [imageView addGestureRecognizer:longPress];
  37.  
  38. }
  39.  
  40. //此方法的返回值表示手势识别器是否支持多手势操作
  41. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
  42. {
  43. return YES;
  44. }
  45.  
  46. //长按操作
  47. - (void) longPress: (UILongPressGestureRecognizer *)ges
  48. {
  49. //开始长按时进行的操作
  50. if (ges.state == UIGestureRecognizerStateBegan) {
  51. NSLog(@"begin");
  52. //结束长按时进行的操作
  53. }else if (ges.state == UIGestureRecognizerStateEnded){
  54. NSLog(@"end");
  55. }
  56. }
  57.  
  58. //移动操作
  59. - (void) panGes: (UIPanGestureRecognizer *)ges
  60. {
  61. //获取相对于父视图移动的距离
  62. CGPoint point = [ges translationInView:self.view];
  63. //开启动画
  64. [UIView beginAnimations:Nil context:Nil];
  65. //设置动画时间
  66. [UIView setAnimationDuration:];
  67. //通过形变属性移动
  68. ges.view.transform = CGAffineTransformTranslate(ges.view.transform, point.x, point.y);
  69. //因为手势识别器会对每次移动的距离进行累加,所以当移动一次后,需要将相对移动距离设置为(0,0);
  70. [ges setTranslation:CGPointMake(, ) inView:self.view];
  71.  
  72. //通过中心点移动
  73. // ges.view.center = CGPointMake(ges.view.center.x + point.x, ges.view.center.y + point.y);
  74. // [ges setTranslation:CGPointMake(0, 0) inView:self.view];
  75. //动画结束
  76. [UIView commitAnimations];
  77. }
  78.  
  79. //旋转操作
  80. - (void) rota: (UIRotationGestureRecognizer *)ges
  81. {
  82. //设置形变属性
  83. ges.view.transform = CGAffineTransformRotate(ges.view.transform, ges.rotation);
  84. //因为CGAffineTransformRotate函数会将每一次的旋转角度进行叠加,所以需要将手势识别器的旋转角度置0;
  85. ges.rotation = ;
  86. }
  87.  
  88. //缩放操作
  89. - (void)pinGes: (UIPinchGestureRecognizer *)ges
  90. {
  91. // NSLog(@"get in...");
  92. //因为CGAffineTransformScale函数会将缩放比例进行累乘,所以需要将手势识别器的缩放比例设置1
  93. ges.view.transform = CGAffineTransformScale(ges.view.transform, ges.scale, ges.scale);
  94. ges.scale = 1.0f;
  95. }

我的IOS学习之路(三):手势识别器的更多相关文章

  1. IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路

    在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...

  2. 学习之路三十九:新手学习 - Windows API

    来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...

  3. Redis——学习之路三(初识redis config配置)

    我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息.     ...

  4. 浅谈iOS学习之路(转)

    转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...

  5. 浅谈iOS学习之路

    转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...

  6. 【学习总结】UIGestureRecognizer(手势识别器)

    基本知识点 : -> IOS 3.2之后 , 苹果推出了手势识别功能 ( Gesture Recognizer ) 在触摸事件处理方面 , 简化开发难度. -> UIGesture Rec ...

  7. IOS 响应者链条 and UIGestureRecognizer 手势识别器)

    一次完整的触摸事件的传递响应的过程 UIAppliction --> UIWiondw -->递归找到最适合处理事件的控件 控件调用touches方法-->判断是否实现touches ...

  8. [iOS UI进阶 - 3.2] 手势识别器UIGestureRecognizer

    A.系统提供的手势识别器   1.敲击手势 UITapGestureRecognizer numberOfTapsRequired: 敲击次数 numberOfTouchesRequired: 同时敲 ...

  9. 纪录我的iOS学习之路

    学习资料的网址 田伟宇(Casa Taloyum)有几篇介绍iOS架构的文章,一级棒!原博客链接. iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方 ...

随机推荐

  1. Ring3下干净的强行删除文件

    在某公司实习完,再次回到寝室.还是在学校好. 实习期间的给我的任务就是为项目添加一个强行删除的模块. 背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除. ...

  2. Delphi中methodaddress的汇编代码解析

    class function TObject.MethodAddress(const Name: ShortString): Pointer;asm        { ->    EAX     ...

  3. SymPy-符号运算好帮手

    SymPy-符号运算好帮手 SymPy是Python的数学符号计算库,用它可以进行数学公式的符号推导.为了调用方便,下面所有的实例程序都假设事先从sympy库导入了所有内容: >>> ...

  4. POJ1961Period

    POJ1961 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ...

  5. Crossing River poj1700贪心

    题目描述:N个人过河,只有一只船,最多只能有两人划船,每个人划船速度不同,船速为最慢的人的速度.输入T为case个数,每个case输入N为人数,接下来一行输入的是每个人过河的时间,都不相同.要求输出N ...

  6. 小话python 中的编码转换

    1.前言: 一直认为自己会了,也明白了其中的知识,但是过几天不用就马上忘记了,总不能天天复习吧!还是来个好记性不如烂笔头吧! 2.编码: python解释器在加载 .py 文件中的代码时,会对内容进行 ...

  7. USB OTG简单介绍

    1 引言 随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口.如今,USB支持三种传输速率:低速(1.5Mb/s).全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输 ...

  8. sublime text 3解放鼠标的快捷键总结

    Sublime text 3是我最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率.刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键, ...

  9. CocoaPods 安装和使用

    CocoaPods的安装 >1. 打开终端, 输入 gem sources -remove https://rubygems.org/ >2. 再输入 gem sources -a htt ...

  10. c#实现pdf另存为功能

    c#实现pdf另存为功能 /// <summary> /// PDF另存为效果 /// </summary> /// <param name="fileName ...