捏合(pinch)手势 您所在的位置:网站首页 捏合手势怎么打 捏合(pinch)手势

捏合(pinch)手势

2023-06-12 00:38| 来源: 网络整理| 查看: 265

通过捏合手势动作可以很轻松的来改变视图元素的一个比例,例如,我们在通过Safari 浏览器打开网页的时候,有时间为了能够更清晰的看到其中的一些文字,那么我们就需要放大我们的屏幕了,有时候我们又需要缩放页面。 

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

1. UIGestureRecognizerStateBegan 

2. UIGestureRecognizerStateChanged 

3. UIGestureRecognizerStateEnded 

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

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

代码如下:

// // ViewController.m // 捏合手势 // // Created by Rio.King on 13-11-2. // Copyright (c) 2013年 Rio.King. All rights reserved. // #import "ViewController.h" @interface ViewController () @property(nonatomic, strong)UIPinchGestureRecognizer *pinchGestureRecognizer; @property(nonatomic, strong)UILabel *myBlackLabel; @property(nonatomic, unsafe_unretained)CGFloat currentScale; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; CGRect labelRect = CGRectMake(0, 0, 200, 200); self.myBlackLabel = [[UILabel alloc] initWithFrame:labelRect]; self.myBlackLabel.center = self.view.center; self.myBlackLabel.backgroundColor = [UIColor grayColor]; /*without this line,the pinch gesture recognizer will not work*/ self.myBlackLabel.userInteractionEnabled = YES; [self.view addSubview:self.myBlackLabel]; /*create the pinch Gesture Recognizer*/ self.pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinches:)]; [self.myBlackLabel addGestureRecognizer:self.pinchGestureRecognizer]; } -(void)handlePinches:(UIPinchGestureRecognizer *)paramSender{ if (paramSender.state == UIGestureRecognizerStateEnded) { self.currentScale = paramSender.scale; }else if(paramSender.state == UIGestureRecognizerStateBegan && self.currentScale != 0.0f){ paramSender.scale = self.currentScale; } if (paramSender.scale !=NAN && paramSender.scale != 0.0) { paramSender.view.transform = CGAffineTransformMakeScale(paramSender.scale, paramSender.scale); } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end 运行结果如下:

            



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有