原文地址http://blog.csdn.net/crazy_frog/article/details/8664108/

// 添加所有的手势
- (void) addGestureRecognizerToView:(UIView *)view
{// 旋转手势UIRotationGestureRecognizer *rotationGestureRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotateView:)];[view addGestureRecognizer:rotationGestureRecognizer];// 缩放手势UIPinchGestureRecognizer *pinchGestureRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchView:)];[view addGestureRecognizer:pinchGestureRecognizer];// 移动手势UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];[view addGestureRecognizer:panGestureRecognizer];
}// 处理旋转手势
- (void) rotateView:(UIRotationGestureRecognizer *)rotationGestureRecognizer
{UIView *view = rotationGestureRecognizer.view;if (rotationGestureRecognizer.state == UIGestureRecognizerStateBegan || rotationGestureRecognizer.state == UIGestureRecognizerStateChanged) {view.transform = CGAffineTransformRotate(view.transform, rotationGestureRecognizer.rotation);[rotationGestureRecognizer setRotation:0];}
}// 处理缩放手势
- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{UIView *view = pinchGestureRecognizer.view;if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);pinchGestureRecognizer.scale = 1;}
}// 处理拖拉手势
- (void) panView:(UIPanGestureRecognizer *)panGestureRecognizer
{UIView *view = panGestureRecognizer.view;if (panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateChanged) {CGPoint translation = [panGestureRecognizer translationInView:view.superview];[view setCenter:(CGPoint){view.center.x + translation.x, view.center.y + translation.y}];[panGestureRecognizer setTranslation:CGPointZero inView:view.superview];}
}

[self addGestureRecognizerToView:view];

//如果处理的是图片,别忘了
[imageView setUserInteractionEnabled:YES];
[imageView setMultipleTouchEnabled:YES];

 

在.h文件里边定义变量

@interface YourViewController : UIViewController<UIGestureRecognizerDelegate>
{  CGFloat lastScale;  CGRect oldFrame;    //保存图片原来的大小  CGRect largeFrame;  //确定图片放大最大的程度
}  

viewDidLoad里面加上

- (void)viewDidLoad
{[super viewDidLoad];showImgView = [[UIImageView alloc] initWithFrame:<span class="s1">CGRectMake</span>(<span class="s2">0</span>, <span class="s2">0</span>, 320, 480)];[showImgView setMultipleTouchEnabled:YES];[showImgView setUserInteractionEnabled:YES];[showImgView setImage:[UIImage imageNamed:@"1.jpg"]];oldFrame = showImgView.frame;largeFrame = CGRectMake(0 - screenSize.width, 0 - screenSize.height, 3 * oldFrame.size.width, 3 * oldFrame.size.height);[self addGestureRecognizerToView:showImgView];[self.view addSubview:showImgView];

我修改了缩放的代码,增加了限制,其他的类似

// 处理缩放手势
- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{  UIView *view = pinchGestureRecognizer.view;  if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {  view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);  if (showImgView.frame.size.width < oldFrame.size.width) {  showImgView.frame = oldFrame;  //让图片无法缩得比原图小
        }  if (showImgView.frame.size.width > 3 * oldFrame.size.width) {  showImgView.frame = largeFrame;  }  pinchGestureRecognizer.scale = 1;  }
}  

转载于:https://www.cnblogs.com/qianyindichang/p/4000187.html

【转】使用手势对UIImageView进行缩放、旋转和移动相关推荐

  1. hammer.js移动端拖拽缩放旋转元素

    第一步 下载hammer.js并引入 下载地址可以是:http://hammerjs.github.io/ 第二步 复制下面这些代码,放在你的js里面 function drag(drag){var ...

  2. R语言使用magick包的image_rotate函数、image_flip函数、image_flop函数对图像进行缩放旋转、镜像、翻转(Rotate or mirror the image)

    R语言使用magick包的image_rotate函数.image_flip函数.image_flop函数对图像进行缩放旋转.镜像.翻转(Rotate or mirror the image) 目录

  3. pr如何跳到关键帧_教你如何使用Final cut pro X制作拉伸缩放旋转的效果|键盘|final|pro|cut...

    Final cut pro X作为最专业的多媒体视频剪辑软件,很多网友都喜欢用它来做视频的一些特效和剪辑,那么如何才能熟练的掌握这款软件的使用方法呢,今天macz为您整理了一篇简单的fcpx使用教程, ...

  4. android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法

    本文实例讲述了Android实现通过手势控制图片大小缩放的方法.分享给大家供大家参考,具体如下: 该程序实现的是通过手势来缩放图片,从左向右挥动图片时图片被放大,从右向左挥动图片时图片被缩小,挥动速度 ...

  5. jQuery 缩放 旋转 裁剪图片 Image Cropper

    A simple jQuery image cropping plugin. Demo cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持图片旋转, ...

  6. qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...

    简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...

  7. C4D模型工具—沿着法线移动/缩放/旋转

    法线就是建模软件所生成的便于自身计算光照方向和反射效果的线,始终垂直于某平面的虚线 显示法线,选项--多边形法线/顶点法线 1:新建对象--立方体: 2.将立方体转为可编辑对象,同时选择多边形模式: ...

  8. [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)

    其余的请见:http://blog.csdn.net/totogo2010/article/details/8615940 1.UIGestureRecognizer介绍 手势识别在iOS上非常重要, ...

最新文章

  1. php 数组 添加元素、删除元素
  2. ETCD-节点挂掉会怎样?
  3. python判断文件是否为空文件对象_判断Python对象是不是为文件对象的方法有哪些...
  4. ESP32烧录bin,乐鑫下载工具使用flash_download_tool
  5. 修改显卡型号软件_电脑一键修改任意CPU型号方法 装X新技能!
  6. OD使用教程23 - 调试篇23
  7. android singleInstance 和 singleTask 的区别
  8. hdu4939思维DP
  9. 项目管理第三招:做好计划,拥抱变化
  10. EnlightenGAN: Deep Light Enhancement without Paired Supervision
  11. 畅联“5机”,华为云WeLink勇当数字化联接器
  12. 某电商类网站服装商品展示页面局部(1+X Web前端开发初级 例题)
  13. MOT 指标汇总 (详讲 说明 含义 )
  14. VCP-DCV6.7学习心得
  15. 计算机应用基础指法实训报告,计算机基础实训报告
  16. SAP MM 执行事务代码VL10B 报错-4501378483 000010 Only 0 CS of material ### available-
  17. Week_eight
  18. childNodes和children的区别
  19. 怎样用计算机打出Abc,智能ABC输入法中的一些使用技巧
  20. 10本好书,助企业赢在数字化转型起跑线

热门文章

  1. ICCV2021 | 如何高效视频定位?QMUL北大Adobe强强联手提出弱监督CRM,性能SOTA
  2. 1万美元奖金,Kaggle 新赛瞄准室内定位
  3. PPDet:减少Anchor-free目标检测中的标签噪声,小目标检测提升明显
  4. CVPR 2020 论文大盘点-文本图像篇
  5. ICCV 2019 | 旷视提出MetaPruning:基于元学习和AutoML的模型压缩新方法
  6. 姿态估计:人体骨骼关键点检测综述(2016-2020)
  7. AI算法工程师手册!
  8. 基于Keras的YOLOv4目标检测平台
  9. Python 中argparse模块的使用
  10. SeDuMi教程(1)