今天用地图的时候有用到pinch 捏合手势

通过捏合手势动作可以很轻松的来改变视图元素的一个比例

手势的动作状态有如下三种,一般是按照顺序来进行转换的。

1. UIGestureRecognizerStateBegan

2. UIGestureRecognizerStateChanged

3. UIGestureRecognizerStateEnded

一旦捏合手势动作产生了之后,我们就需要在捕获的事件中进行一个页面调整。其中有两个比较重要的变量 scale 和 velocity ,前者是一个比例范围,后者是一个变化速率的,也就是说每次变化的一个像素点。

由于 scale 这个属性的值是每次都在变的,所以我们需要用另外一个变量来保存当前的一个scale的值,这个变量叫做currentScale,这样我们就可以进行一个缩小,变大的视图效果了 。

代码:

  1. #import "ViewController.h"
  2. @interface ViewController ()
  3. @property(nonatomic, strong)UIPinchGestureRecognizer *pinchGestureRecognizer;
  4. @property(nonatomic, strong)UIView *myView;
  5. @property(nonatomic, unsafe_unretained)CGFloat currentScale;
  6. @end
  7. @implementation ViewController
  8. - (void)viewDidLoad
  9. {
  10. [super viewDidLoad];
  11. CGRect labelRect = CGRectMake(0, 0, 200, 200);
  12. self.myView= [[UIView alloc] initWithFrame:self.view.frame];
  13. self.myView.center = self.view.center;
  14. self.myView.backgroundColor = [UIColor grayColor];
  15. //打开view的交互
  16. self.myBlackLabel.userInteractionEnabled = YES;
  17. [self.view addSubview:self.myView];
  18. //创建一个手势
  19. self.pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinches:)];
  20. [self.myView addGestureRecognizer:self.pinchGestureRecognizer];
  21. }
  22. #pragma mark - 手势事件
  23. -(void)handlePinches:(UIPinchGestureRecognizer *)paramSender{
  24. if (paramSender.state == UIGestureRecognizerStateEnded) {
  25. self.currentScale = paramSender.scale;
  26. }else if(paramSender.state == UIGestureRecognizerStateBegan && self.currentScale != 0.0f){
  27. paramSender.scale = self.currentScale;
  28. }
  29. if (paramSender.scale !=NAN && paramSender.scale != 0.0) {
  30. paramSender.view.transform = CGAffineTransformMakeScale(paramSender.scale, paramSender.scale);
  31. }
  32. }
  33. - (void)didReceiveMemoryWarning
  34. {
  35. [super didReceiveMemoryWarning];
  36. // Dispose of any resources that can be recreated.
  37. }
  38. @end

iOS手势之pinch的更多相关文章

  1. IOS 手势详解

    在IOS中手势可以让用户有很好的体验,因此我们有必要去了解一下手势. (在设置手势是有很多值得注意的地方) *是需要设置为Yes的点击无法响应* *要把手势添加到所需点击的View,否则无法响应* 手 ...

  2. iOS手势处理

    iOS手势处理 iOS手势有着如下几种: UITapGestureRecognizer UIPinchGestureRecognizer UIRotationGestureRecognizer UIS ...

  3. ios手势

    iOS 手势操作:拖动.捏合.旋转.点按.长按.轻扫.自定义 大 中 小   1.UIGestureRecognizer 介绍 手势识别在 iOS 中非常重要,他极大地提高了移动设备的使用便捷性. i ...

  4. iOS手势学习UIGestureRecognizer & cocos2d 手势推荐

    iOS手势学习UIGestureRecognizer & cocos2d 手势推荐 手势识别类型: UILongPressGestureRecognizer  // 长按UIPanGestur ...

  5. iOS 手势识别器概述

    手势识别器 iOS 手势识别器(UIGestureRecognizer) 点击手势(UITapGestureRecognizer) 滑动手势(UISwipeGestureRecognizer) 旋转手 ...

  6. swift 实现iOS手势密码、指纹密码、faceID

    本博客包含了如何实现iOS手势密码.指纹密码.faceID全步骤,包括了完整的代码. 先附上demo地址https://github.com/Liuyubao/LYBTouchID,支持swift3. ...

  7. iOS手势识别器

    UIGestureRecognizer UIGestureRecognizer类,用于检测.识别用户使用设备时所用的手势.它是一个抽象类,定义了所有手势的基本行为.以下是UIGestureRecogn ...

  8. iOS 手势及触摸

    转自:http://justsee.iteye.com/blog/1885538 一.响应链 在IOS开发中会遇到各种操作事件,通过程序可以对这些事件做出响应. 首先,当发生事件响应时,必须知道由谁来 ...

  9. iOS手势解锁、指纹解锁--Swift代码

    一.手势密码 1. 1.1.用UIButton组成手势的节点. 1.2.当手指接触屏幕时,调用重写的 touchesBegan:withEvent方法(在touchesBegan里调用setNeeds ...

随机推荐

  1. Android开发 SQLite数据库应用笔记(一)

    注意: 1.public Cursor rawQuery(String sql, String[] selectionArgs) Cursor游标是查询后返回的结果集合,游标的意思是指向集合中的某行. ...

  2. jquery中的事件与动画

    一:事件 1.鼠标事件 eg:光棒效果 $(function () { $('li').mouseover(function () { //鼠标移过时 $(this).css('background' ...

  3. hbase的regionserver宕机

    错误日志: regionserver.HRegionServer: Failed deleting my ephemeral node zookeeper.RecoverableZooKeeper: ...

  4. Java学习笔记之自定义异常

    1.自定义异常类: /** * 自定义异常,只要继承继承Exception类或其子类即可 * @author Administrator * */ public class FileException ...

  5. Java String charAt()方法

    描述 此方法返回位于字符串的指定索引处的字符.该字符串的索引从零开始. 语法 此方法定义的语法如下: public char charAt(int index) 参数 这里是参数的细节: index  ...

  6. python自动生成excel报表

    1.将SQL语句查询的内容,直接写入到excel报表中,以下为全部脚本.要求:此版本必须运维在windows平台,并且安装了excel程序,excel版本不限. python版本为2.7 if b 判 ...

  7. JTAG各类接口针脚定义及含义

    注:转自 揽月阁 JTAG有10pin的.14pin的和20pin的,尽管引脚数和引脚的排列顺序不同,但是其中有一些引脚是一样的,各个引脚的定义如下. 一.引脚定义 Test Clock Input ...

  8. Selenium自动化-CSS元素定位

    接下来,开始讲解 CSS元素定位. CSS定位速度快,功能多,但是不能向上查找,比 xpath好用,是本人认为最好用的定位方式   大致用法总结: 具体使用仿上篇博客.http://www.cnblo ...

  9. Jrebel 配置

    先下载插件 http://139.199.89.239:1008/88414687-3b91-4286-89ba-2dc813b107ce http://jrebel.autoseasy.cn/xix ...

  10. 基于IOS上MDM技术相关资料整理及汇总

    (转自:http://www.mbaike.net/special/1542.html) 一.MDM相关知识:MDM (Mobile Device Management ),即移动设备管理.在21世纪 ...