//

//  ViewController.m

//  05-手势

//

//  Created by wanghy on 15/9/21.

//  Copyright (c) 2015年 wanghy. All rights reserved.

//

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView* imageView;

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

// 1.创建一个手势的对象

// 2.把手势的对象添加到需要手势的view当中

// 3.实现手势的方法

//UITapGestureRecognizer(敲击)-------------

//    // 1.创建手势的对象

//    UITapGestureRecognizer* tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];

//    // 几根手指

//    tap.numberOfTouchesRequired = 2;

//    // 点几次

//    tap.numberOfTapsRequired = 2;

//    // 2.对imageView添加手势

//    [self.imageView addGestureRecognizer:tap];

//    // 3.实现方法

//UISwipeGestureRecognizer(轻扫)-------------

// 1.

UISwipeGestureRecognizer* swipe = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];

UISwipeGestureRecognizer* swipe1 = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipe:)];

// 往左滑

swipe.direction = UISwipeGestureRecognizerDirectionLeft;

// 2.

[self.imageView addGestureRecognizer:swipe];

[self.imageView addGestureRecognizer:swipe1];

//UILongPressGestureRecognizer(长按)-------------

// 1.

UILongPressGestureRecognizer* longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];

// 长按多长时间执行方法

longPress.minimumPressDuration = 2;

// 误差

longPress.allowableMovement = 10;

// 2.

[self.imageView addGestureRecognizer:longPress];

//UIRotationGestureRecognizer(旋转)-------------

// 1

UIRotationGestureRecognizer* rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotation:)];

// 2.

[self.imageView addGestureRecognizer:rotation];

//UIPinchGestureRecognizer(捏合,用于缩放)-------------

//1.

UIPinchGestureRecognizer* pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinch:)];

// 2.

[self.imageView addGestureRecognizer:pinch];

//UIPanGestureRecognizer(拖拽)-------------

// 1.

UIPanGestureRecognizer* pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)];

// 2.

[self.imageView addGestureRecognizer:pan];

}

// 拖拽

- (void)pan:(UIPanGestureRecognizer*)sender

{

CGPoint p = [sender translationInView:self.imageView];

self.imageView.transform = CGAffineTransformTranslate(self.imageView.transform, p.x, p.y);

[sender setTranslation:CGPointZero inView:self.imageView];

}

// 捏合

- (void)pinch:(UIPinchGestureRecognizer*)sender

{

//    self.imageView.transform = CGAffineTransformMakeScale(sender.scale, sender.scale);

self.imageView.transform = CGAffineTransformScale(self.imageView.transform, sender.scale, sender.scale);

sender.scale = 1;

}

// 旋转

- (void)rotation:(UIRotationGestureRecognizer*)sender

{

NSLog(@"%f", sender.rotation);

self.imageView.transform = CGAffineTransformRotate(self.imageView.transform, sender.rotation);

sender.rotation = 0;

//    self.imageView.transform = CGAffineTransformMakeRotation(sender.rotation);

}

// 长按

- (void)longPress:(UILongPressGestureRecognizer*)sender

{

// 只是想让开始的时候执行某个代码 需要判断 手势的状态

if (sender.state == UIGestureRecognizerStateBegan) {

NSLog(@"longPress");

}

}

// 轻扫

- (void)swipe:(UISwipeGestureRecognizer*)sender

{

if (sender.direction == UISwipeGestureRecognizerDirectionLeft) {

NSLog(@"left");

}

else {

NSLog(@"right");

}

}

// 敲击

- (void)tap:(UITapGestureRecognizer*)sender

{

NSLog(@"tap");

}

@end

IOS开发中针对UIImageView的几种常用手势的更多相关文章

  1. IOS开发中数据持久化的几种方法--NSUserDefaults

    IOS开发中数据持久化的几种方法--NSUserDefaults IOS 开发中,经常会遇到需要把一些数据保存在本地的情况,那么这个时候我们有以下几种可以选择的方案: 一.使用NSUserDefaul ...

  2. iOS开发中关于nslog的几种流行做法小结

    不管哪种方法,都必须在PCH文件中做下宏定义 DEBUG和RELEASE要分开,RELEASE时log打印要取消 方法一:简单直接,用几行代码搞定,简洁但功能少 #ifdef DEBUG #defin ...

  3. 怎样实现IOS开发中的数据存储方式

    iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1)  用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...

  4. iOS开发中六种手势识别

    iOS开发中手势识别有六种: 轻击手势(TapGestureRecognizer), 轻扫手势 (SwipeGestureRecognizer), 长按手势(LongPressGestureRecog ...

  5. iOS开发UI篇—iOS开发中三种简单的动画设置

    iOS开发UI篇—iOS开发中三种简单的动画设置 [在ios开发中,动画是廉价的] 一.首尾式动画 代码示例: // beginAnimations表示此后的代码要“参与到”动画中 [UIView b ...

  6. iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

                   在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...

  7. iOS开发中的4种数据持久化方式【一、属性列表与归档解档】

    iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...

  8. iOS 开发中常见的设计模式

    最近有小伙伴问到在iOS开发中的几种设计模式,这里摘录一下别人的总结(因为已经感觉总结得差不多了,适用的可以阅读一下) 首先是开发中的23中设计模式分为三大类:1.创建型 2.结构型 3.行为型 (i ...

  9. iOS开发中遇到的一些问题及解决方案【转载】

    iOS开发中遇到的一些问题及解决方案[转载] 2015-12-29 [385][scrollView不接受点击事件,是因为事件传递失败] // //  MyScrollView.m //  Creat ...

随机推荐

  1. 荷兰国旗,三类数字分离 nyoj

    很有用O(n)内实现三类数字分离,以前大多是分成两类数据,快排中分成两类,还有就是"ab***vvvc" 在O(n)中变成 abvvc****,变成两类划分问题   #includ ...

  2. Android动态加载so文件

    在Android中调用动态库文件(*.so)都是通过jni的方式,而且往往在apk或jar包中调用so文件时,都要将对应so文件打包进apk或jar包,工程目录下图: 以上方式的存在的问题: 1.缺少 ...

  3. HDOJ-ACM1013(JAVA)

    这道题也很简单~主要是将输入转为字符串(存储大数,操作字符数组) 题意: 24 : 2 + 4 = 6  输出6 39 : 3 + 9 = 12 , 1 + 2 = 3 输出3 999: 9 + 9 ...

  4. 【ACM/ICPC2013】树形动态规划专题

    前言:按照计划,昨天应该是完成树形DP7题和二分图.最大流基础专题,但是由于我智商实在拙计,一直在理解树形DP的思想,所以第二个专题只能顺延到今天了.但是昨天把树形DP弄了个5成懂我是很高兴的!下面我 ...

  5. Tutorial: Getting Started with SignalR (C#) -摘自网络

    Overview This tutorial introduces SignalR development by showing how to build a simple browser-based ...

  6. Visual C++中的编译器优化

    博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:Visual C++中的编译器优化.

  7. 最火的Android开源项目(一)

    GitHub在中国 的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项 目很是必要.利用这些项目,有时能够 ...

  8. Hyper-V避免使用快照

    虽然Hyper-V快照好处多多,但应该尽量少用,有两个原因,首先,如果你创建的是数据库服务器快照,你必须执行回滚,这样数据库往往会招到破坏,其次,创建快照会影响虚拟机的性能,实际上,创建快照就是创建第 ...

  9. 【Android】BroadCast广播机制应用与实例

    如何编写广播接收器 第一步:需要继承BroadcastReceiver类,覆写其中的onReceive()方法. class MyBroadcastReceiver extends Broadcast ...

  10. SpringMVC请求分发的简单实现

    简介     以前用了下SpringMVC感觉挺不错了,前段事件也简单了写了一些代码来实现了SpringMVC简单的请求分发功能,实现的主要思想如下: 将处理请求的类在系统启动的时候加载起来,相当于S ...