我的IOS学习之路(三):手势识别器
在iOS的学习中,对于手势的处理是极为重要的,如对于图片,我们经常需要进行旋转,缩放以及移动等。这里做一下总结,详见代码。
- - (void)viewDidLoad
- {
- [super viewDidLoad];
- UIImage *image = [UIImage imageNamed:@"018.png"];
- UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
- imageView.frame = CGRectMake(, , , );
- [self.view addSubview:imageView];
- //开启用户交互
- imageView.userInteractionEnabled = YES;
- //缩放手势识别器
- UIPinchGestureRecognizer *pinGes = [[UIPinchGestureRecognizer alloc] init];
- pinGes.delegate = self;
- [pinGes addTarget:self action:@selector(pinGes:)];
- [imageView addGestureRecognizer:pinGes];
- //旋转手势识别器
- UIRotationGestureRecognizer *rotaGes = [[UIRotationGestureRecognizer alloc] init];
- rotaGes.delegate = self;
- imageView.userInteractionEnabled = YES;
- [rotaGes addTarget:self action:@selector(rota:)];
- [imageView addGestureRecognizer:rotaGes];
- //移动手势识别器
- UIPanGestureRecognizer *panGes = [[UIPanGestureRecognizer alloc] init];
- [panGes addTarget:self action:@selector(panGes:)];
- [imageView addGestureRecognizer:panGes];
- //长按手势识别器
- UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] init];
- //设置长按时间标准(默认时间为0.5秒)
- longPress.minimumPressDuration = 1.0;
- [longPress addTarget:self action:@selector(longPress:)];
- [imageView addGestureRecognizer:longPress];
- }
- //此方法的返回值表示手势识别器是否支持多手势操作
- - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
- {
- return YES;
- }
- //长按操作
- - (void) longPress: (UILongPressGestureRecognizer *)ges
- {
- //开始长按时进行的操作
- if (ges.state == UIGestureRecognizerStateBegan) {
- NSLog(@"begin");
- //结束长按时进行的操作
- }else if (ges.state == UIGestureRecognizerStateEnded){
- NSLog(@"end");
- }
- }
- //移动操作
- - (void) panGes: (UIPanGestureRecognizer *)ges
- {
- //获取相对于父视图移动的距离
- CGPoint point = [ges translationInView:self.view];
- //开启动画
- [UIView beginAnimations:Nil context:Nil];
- //设置动画时间
- [UIView setAnimationDuration:];
- //通过形变属性移动
- ges.view.transform = CGAffineTransformTranslate(ges.view.transform, point.x, point.y);
- //因为手势识别器会对每次移动的距离进行累加,所以当移动一次后,需要将相对移动距离设置为(0,0);
- [ges setTranslation:CGPointMake(, ) inView:self.view];
- //通过中心点移动
- // ges.view.center = CGPointMake(ges.view.center.x + point.x, ges.view.center.y + point.y);
- // [ges setTranslation:CGPointMake(0, 0) inView:self.view];
- //动画结束
- [UIView commitAnimations];
- }
- //旋转操作
- - (void) rota: (UIRotationGestureRecognizer *)ges
- {
- //设置形变属性
- ges.view.transform = CGAffineTransformRotate(ges.view.transform, ges.rotation);
- //因为CGAffineTransformRotate函数会将每一次的旋转角度进行叠加,所以需要将手势识别器的旋转角度置0;
- ges.rotation = ;
- }
- //缩放操作
- - (void)pinGes: (UIPinchGestureRecognizer *)ges
- {
- // NSLog(@"get in...");
- //因为CGAffineTransformScale函数会将缩放比例进行累乘,所以需要将手势识别器的缩放比例设置1
- ges.view.transform = CGAffineTransformScale(ges.view.transform, ges.scale, ges.scale);
- ges.scale = 1.0f;
- }
我的IOS学习之路(三):手势识别器的更多相关文章
- IOS开发---菜鸟学习之路--(二十二)-近期感想以及我的IOS学习之路
在不知不觉当中已经写了21篇内容 其实一开始是没有想些什么东西的 只是买了Air后 感觉用着挺舒服的,每天可以躺在床上,就一台笔记本,不用网线,不用电源,不用鼠标,不用键盘,干干脆脆的就一台笔记本. ...
- 学习之路三十九:新手学习 - Windows API
来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大. 经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解. 文中所有的消息常量,API,结构体都整理出来了 ...
- Redis——学习之路三(初识redis config配置)
我们先看看config 默认情况下系统是怎么配置的.在命令行中输入 config get *(如图) 默认情况下有61配置信息,每一个命令占两行,第一行为配置名称信息,第二行为配置的具体信息. ...
- 浅谈iOS学习之路(转)
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- 浅谈iOS学习之路
转眼学习iOS已经快两年的时间了,这个路上有挫折也有喜悦,一步步走过来发现这个过程是我这一辈子的财富,我以前的老大总是对我说,年轻就是最大的资本(本人91年),现在才算是慢慢的体会到,反观自己走过的这 ...
- 【学习总结】UIGestureRecognizer(手势识别器)
基本知识点 : -> IOS 3.2之后 , 苹果推出了手势识别功能 ( Gesture Recognizer ) 在触摸事件处理方面 , 简化开发难度. -> UIGesture Rec ...
- IOS 响应者链条 and UIGestureRecognizer 手势识别器)
一次完整的触摸事件的传递响应的过程 UIAppliction --> UIWiondw -->递归找到最适合处理事件的控件 控件调用touches方法-->判断是否实现touches ...
- [iOS UI进阶 - 3.2] 手势识别器UIGestureRecognizer
A.系统提供的手势识别器 1.敲击手势 UITapGestureRecognizer numberOfTapsRequired: 敲击次数 numberOfTouchesRequired: 同时敲 ...
- 纪录我的iOS学习之路
学习资料的网址 田伟宇(Casa Taloyum)有几篇介绍iOS架构的文章,一级棒!原博客链接. iOS应用架构谈 开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方 ...
随机推荐
- Ring3下干净的强行删除文件
在某公司实习完,再次回到寝室.还是在学校好. 实习期间的给我的任务就是为项目添加一个强行删除的模块. 背景是硬盘上存储空间不够时,需要删掉老的文件,如果这时后,老的文件被打开了,没有关掉,就无法删除. ...
- Delphi中methodaddress的汇编代码解析
class function TObject.MethodAddress(const Name: ShortString): Pointer;asm { -> EAX ...
- SymPy-符号运算好帮手
SymPy-符号运算好帮手 SymPy是Python的数学符号计算库,用它可以进行数学公式的符号推导.为了调用方便,下面所有的实例程序都假设事先从sympy库导入了所有内容: >>> ...
- POJ1961Period
POJ1961 #include<iostream> #include<cstdio> #include<cstring> using namespace std; ...
- Crossing River poj1700贪心
题目描述:N个人过河,只有一只船,最多只能有两人划船,每个人划船速度不同,船速为最慢的人的速度.输入T为case个数,每个case输入N为人数,接下来一行输入的是每个人过河的时间,都不相同.要求输出N ...
- 小话python 中的编码转换
1.前言: 一直认为自己会了,也明白了其中的知识,但是过几天不用就马上忘记了,总不能天天复习吧!还是来个好记性不如烂笔头吧! 2.编码: python解释器在加载 .py 文件中的代码时,会对内容进行 ...
- USB OTG简单介绍
1 引言 随着USB2.0版本号的公布,USB越来越流行,已经成为一种标准接口.如今,USB支持三种传输速率:低速(1.5Mb/s).全速(12Mb/s)和快速(480Mb/s),四种传输类型:块传输 ...
- sublime text 3解放鼠标的快捷键总结
Sublime text 3是我最喜欢的代码编辑器,每天和代码打交道,必先利其器,掌握基本的代码编辑器的快捷键,能让你打码更有效率.刚开始可能有些生疏,只要花一两个星期坚持使用并熟悉这些常用的快捷键, ...
- CocoaPods 安装和使用
CocoaPods的安装 >1. 打开终端, 输入 gem sources -remove https://rubygems.org/ >2. 再输入 gem sources -a htt ...
- c#实现pdf另存为功能
c#实现pdf另存为功能 /// <summary> /// PDF另存为效果 /// </summary> /// <param name="fileName ...