ios开发手势处理之手势识别二

#import "ViewController.h"

@interface ViewController ()<UIGestureRecognizerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageV;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.imageV.userInteractionEnabled = YES;

     //添加旋转手势
    [self rotationGes];

      //添加捏合手势
    [self pinch];

}

//Simultaneous:同时
//是否允许同时支持多个手势
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{

    return YES;
}

 //添加旋转手势
- (void)rotationGes{
    //添加旋转手势
    UIRotationGestureRecognizer *rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGes:)];

    rotation.delegate = self;

    [self.imageV addGestureRecognizer:rotation];
}

- (void)rotationGes:(UIRotationGestureRecognizer *)rotationGes{

    self.imageV.transform = CGAffineTransformRotate(self.imageV.transform, rotationGes.rotation);

    //复位
    [rotationGes setRotation:0];

}

  //添加捏合手势
- (void)pinch{

    UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];
    pinch.delegate = self;
    [self.imageV addGestureRecognizer:pinch];
}

//当缩放时调用
- (void)pinch:(UIPinchGestureRecognizer *)pinch{
    NSLog(@"%s",__func__);
    self.imageV.transform = CGAffineTransformScale(self.imageV.transform, pinch.scale,pinch.scale );

    //复位
    [pinch setScale:1];
}

- (void)panGes{
    //添加拖动手势
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];
    [self.imageV addGestureRecognizer:pan];
}

//当拖动View时调用
- (void)pan:(UIPanGestureRecognizer *)pan {

    //获取偏移量(相对于最原始的偏移量)
    CGPoint transP = [pan translationInView:self.imageV];
    NSLog(@"%@",NSStringFromCGPoint(transP));

    self.imageV.transform = CGAffineTransformTranslate(self.imageV.transform, transP.x, transP.y);

    //让它相对于上一次
    //复位.
    [pan setTranslation:CGPointZero inView:self.imageV];

}

@end
时间: 2024-10-10 05:51:02

ios开发手势处理之手势识别二的相关文章

【IOS】IOS开发问题解决方法索引(二)

IOS开发问题解决方法索引(二) 1       不使用ARC编译,-fno-objc-arc ios5 选择了ARC但是不使用ARC编译,-fno-objc-arc http://leobluewing.iteye.com/blog/1384797 http://blog.cnrainbird.com/index.php/2012/03/13/object-c_kai_fa_zhong_hun_he_shi_yong_huo_bu_shi_yong_arc/ 2       SIGABRT错误

IOS开发——手势 &amp; 传感器 &amp; 物理引擎

这次思维导图比较杂,demo已经全部上传到github上,小编的github地址是:狂戳 先看下效果图: 手势画板: 物理引擎: 传感器: IOS开发--手势 & 传感器 & 物理引擎

iOS开发网络篇—文件下载(二&#183;合理)

iOS开发网络篇—文件下载(二·合理) 一.边下载,边写入 1.思路 把下载的data追加到文件的尾部,直到所有的数据下载完为止. 1.在连通了服务器的时候,创建一个空的文件到沙盒中NSFileManager(文件管理类) 2.创建写数据的文件句柄 3.在接收到服务器返回的数据后,把data写入到创建的空文件中,但是不能使用writeTofile(会覆盖) 3.1移动到文件的尾部 3.2从当前移动的位置,写入数据 4.服务器的数据加载完毕后关闭连接,不再输入数据在文件中 二.代码示例 1 //

【iOS开发每日小笔记(二)】gitHub上的开源“瀑布流”使用心得

这篇文章是我的[iOS开发每日小笔记]系列中的一片,记录的是今天在开发工作中遇到的,可以用很短的文章或很小的demo演示解释出来的小心得小技巧.该分类的文章,内容涉及的知识点可能是很简单的.或是用很短代码片段就能实现的,但在我看来它们可能会给用户体验.代码效率得到一些提升,或是之前自己没有接触过的技术,很开心的学到了,放在这里得瑟一下(^_^).其实,90%的作用是帮助自己回顾.记忆.复习.如果看官觉得太easy,太碎片,则可以有两个选择:1,移步[iOS探究]分类,对那里的文章进行斧正:2,在

iOS 开发中的争议(二)

这是该系列的第二篇.在本文中,我想讨论的是:对于 UI 界面的编写工作,到底应该用 xib/storyboard 完成,还是用手写代码来完成? 本着 “使用过才有发言权” 原则,我介绍一下我的经历: 最早在网易开发 “ 有道云笔记 “ 的时候,我们是使用 xib 来制作界面的. 三前年创业编写 “ 粉笔网 “ 的时候,我也是使用 xib 来制作界面的. 之后开发 “ 猿题库 “ 的时候,我尝试了一下使用 storyboard 来制作界面,但最后放弃了.之后我把大部分界面编写工作都改成由手写代码来

【Swift】iOS开发小坑历险记(二)

前言 这个系列主要是一些开发中遇到的坑记录分享,有助于初学者跨过这些坑,攒够 7 条发一篇. 声明  欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 1.用动画更新约束没有动画效果? 缺少 layoutIfNeeded ,事例: UIView.animateWithDuration(0.15, animations: { () -> Void in self.heightConst

iOS开发工程师面试题(二)

1.手写冒泡跟插入排序 冒泡排序来源于生活常识,相当于把数组竖起来,轻的向上,重的向下.void bubbleSort(int[] unsorted) { for (int i = 0; i < unsorted.Length; i++) { for (int j = i; j < unsorted.Length; j++) { if (unsorted[i] > unsorted[j]) { int temp = unsorted[i]; unsorted[i] = unsorted[

一个java程序员自学IOS开发之路(十二)

2015/12/05 Day 44 今天开始学习图层 CALayer 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain) CALayer *

iOS开发——面试笔试精华(二)

面试笔试精华(二) 警告:一定要把英文题目过一遍,有些公司的题目故意弄成英文的!!! 1.        Difference between shallow copy and deep copy? 浅复制和深复制的区别? 1>   浅拷贝:指针(地址)拷贝,不会产生新对象 2>   深拷贝:内容拷贝,会产生新对象 2.        What is advantage of categories? What is difference between implementing a categ