iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转操作

转载 2015年07月10日 13:46:45

iOS提供了拍击、旋转、滑动、挤捏等丰富的手势,因此对图像的操作就显得非常友好、简单。

下面代码展示了使用UIGestureRecognizer对图像进行缩放、移动、旋转操作使用方法。

在使用代码之前,首先建立一个UIView,并在该视图中增加一个UIImageView视图,用于展示图像。那么该UIView就类似图像画板一样,对图像的操作都基于此视图中进行。

在视图中创建手势识别器UIGestureRecognizers

复制代码
- (void)viewDidLoad {
[super viewDidLoad];

UIPinchGestureRecognizer *pinchRecognizer = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(scale:)] autorelease];
[pinchRecognizer setDelegate:self];
[self.view addGestureRecognizer:pinchRecognizer];

UIRotationGestureRecognizer *rotationRecognizer = [[[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)] autorelease];
[rotationRecognizer setDelegate:self];
[self.view addGestureRecognizer:rotationRecognizer];

UIPanGestureRecognizer *panRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)] autorelease];
[panRecognizer setMinimumNumberOfTouches:1];
[panRecognizer setMaximumNumberOfTouches:1];
[panRecognizer setDelegate:self];
[canvas addGestureRecognizer:panRecognizer];

UITapGestureRecognizer *tapProfileImageRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)] autorelease];
[tapProfileImageRecognizer setNumberOfTapsRequired:1];
[tapProfileImageRecognizer setDelegate:self];
[canvas addGestureRecognizer:tapProfileImageRecognizer];

}
复制代码

下面是响应各手势消息的方法:

复制代码
// 缩放
-(void)scale:(id)sender {

if([(UIPinchGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
  _lastScale = 1.0;
}

CGFloat scale = 1.0 - (_lastScale - [(UIPinchGestureRecognizer*)sender scale]);

CGAffineTransform currentTransform = photoImage.transform;
CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, scale, scale);

[photoImage setTransform:newTransform];

_lastScale = [(UIPinchGestureRecognizer*)sender scale];
[self showOverlayWithFrame:photoImage.frame];

}

// 旋转
-(void)rotate:(id)sender {

if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

  _lastRotation = 0.0;
  return;
}

CGFloat rotation = 0.0 - (_lastRotation - [(UIRotationGestureRecognizer*)sender rotation]);

CGAffineTransform currentTransform = photoImage.transform;
CGAffineTransform newTransform = CGAffineTransformRotate(currentTransform,rotation);

[photoImage setTransform:newTransform];

_lastRotation = [(UIRotationGestureRecognizer*)sender rotation];
[self showOverlayWithFrame:photoImage.frame];

}

// 移动
-(void)move:(id)sender {

CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:canvas];

if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
_firstX = [photoImage center].x;
_firstY = [photoImage center].y;
}

translatedPoint = CGPointMake(_firstX+translatedPoint.x, _firstY+translatedPoint.y);

[photoImage setCenter:translatedPoint];
[self showOverlayWithFrame:photoImage.frame];
}

iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转操作

iOS提供了拍击、旋转、滑动、挤捏等丰富的手势,因此对图像的操作就显得非常友好、简单。 下面代码展示了使用UIGestureRecognizer对图像进行缩放、移动、旋转操作使用方法。  ...
  • AndYouAndMe
  • AndYouAndMe
  • 2015年07月27日 11:03
  • 400

iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作

iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作 2013-04-04 23:56 520人阅读 评论(0) 收藏 举报 UIGestureR...
  • u014351782
  • u014351782
  • 2014年03月25日 17:26
  • 938

iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转等操作

UIGestureRecognizer 类 该类拥有一系列子类,每个子类都用于识别某类指定的手势。它们是: UITapGestureRecognizer – “轻击”手势。可以配置为“单击”和...
  • Crayon_DyS
  • Crayon_DyS
  • 2013年04月04日 23:56
  • 9302

iOS图片添加平移/缩放/旋转多个手势

// // UIImageView+Utils.m // OpenWorkr // // Created by 冰凉的枷锁 on 2017/3/6. // Copyright © 2017年 ...
  • qq_25639809
  • qq_25639809
  • 2017年03月06日 12:06
  • 872

Android单点触控技术,对图片进行平移,缩放,旋转操作

转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/42833893),请尊重他人的辛勤劳动成果,谢谢! ...
  • chengkaizone
  • chengkaizone
  • 2016年05月13日 12:05
  • 842

android中手势操作图片的平移、缩放、旋转

转自:http://blog.csdn.net/happy_bug/article/details/7895244
  • gf771115
  • gf771115
  • 2014年11月06日 21:22
  • 3852

Hololens入门之手势识别(使用Navigation gesture控制物体缩放)

Hololens入门之手势识别(使用Navigation gesture控制物体缩放) 本文示例在  Hololens入门之手势识别(手检测反馈) 示例的基础上进行修改 Navigation ...
  • sun_t89
  • sun_t89
  • 2016年10月08日 10:31
  • 3339

HoloLens开发3:手势控制物体旋转

1.导入HoloToolKit插件 删除场景初始MainCamera,并将插件中MainCamera预制件拖入Hierarchy面板中。 或者将场景初始主相机的Camera做如下设置: 2.添加功能...
  • u011937708
  • u011937708
  • 2016年11月09日 16:50
  • 2175

【IOS】使用手势对UIImageView进行缩放、旋转和移动

因为项目需要,需要对图片进行一些操作。本着拿来主义的原则~上网找了方法。 但是发现网上很多实现,要么过于复杂,要么不够完善。 终于找到一篇比较好的文章。 参考文章: http://apluck....
  • Crazy_Frog
  • Crazy_Frog
  • 2013年03月12日 16:12
  • 33238

缩放系列(三):一个可以手势缩放、拖拽、旋转的layout

弄了一个下午,终于搞出来了,PowerfulLayout 下面是一个功能强大的改造的例子: 可以实现以下需求: 1.两个手指进行缩放布局 2.所有子控件也随着缩放, 3.子控件该有的功能不能...
  • qq_30948129
  • qq_30948129
  • 2016年09月04日 20:15
  • 1117
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 使用手势UIGestureRecognizer对图像进行缩放、移动、旋转操作
举报原因:
原因补充:

(最多只允许输入30个字)