【转】使用手势对UIImageView进行缩放、旋转和移动
原文地址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进行缩放、旋转和移动相关推荐
- hammer.js移动端拖拽缩放旋转元素
第一步 下载hammer.js并引入 下载地址可以是:http://hammerjs.github.io/ 第二步 复制下面这些代码,放在你的js里面 function drag(drag){var ...
- 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) 目录
- pr如何跳到关键帧_教你如何使用Final cut pro X制作拉伸缩放旋转的效果|键盘|final|pro|cut...
Final cut pro X作为最专业的多媒体视频剪辑软件,很多网友都喜欢用它来做视频的一些特效和剪辑,那么如何才能熟练的掌握这款软件的使用方法呢,今天macz为您整理了一篇简单的fcpx使用教程, ...
- android 手势事件 重写,Android实现通过手势控制图片大小缩放的方法
本文实例讲述了Android实现通过手势控制图片大小缩放的方法.分享给大家供大家参考,具体如下: 该程序实现的是通过手势来缩放图片,从左向右挥动图片时图片被放大,从右向左挥动图片时图片被缩小,挥动速度 ...
- jQuery 缩放 旋转 裁剪图片 Image Cropper
A simple jQuery image cropping plugin. Demo cropper是一款使用简单且功能强大的图片剪裁jQuery插件.该图片剪裁插件支持图片放大缩小,支持图片旋转, ...
- qgraphicsview鼠标移动图片_交互式QGraphicsView(平移/缩放/旋转)-阿里云开发者社区...
简述 Graphics View提供了一个平台用于大量自定义 2D 图元的管理与交互框架包括一个事件传播架构支持场景 Scene 中的图元 Item 进行精确的双精度交互功能.Item 可以处理键盘事 ...
- C4D模型工具—沿着法线移动/缩放/旋转
法线就是建模软件所生成的便于自身计算光照方向和反射效果的线,始终垂直于某平面的虚线 显示法线,选项--多边形法线/顶点法线 1:新建对象--立方体: 2.将立方体转为可编辑对象,同时选择多边形模式: ...
- [Python从零到壹] 三十八.图像处理基础篇之图像几何变换(平移缩放旋转)
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
其余的请见:http://blog.csdn.net/totogo2010/article/details/8615940 1.UIGestureRecognizer介绍 手势识别在iOS上非常重要, ...
最新文章
- php 数组 添加元素、删除元素
- ETCD-节点挂掉会怎样?
- python判断文件是否为空文件对象_判断Python对象是不是为文件对象的方法有哪些...
- ESP32烧录bin,乐鑫下载工具使用flash_download_tool
- 修改显卡型号软件_电脑一键修改任意CPU型号方法 装X新技能!
- OD使用教程23 - 调试篇23
- android singleInstance 和 singleTask 的区别
- hdu4939思维DP
- 项目管理第三招:做好计划,拥抱变化
- EnlightenGAN: Deep Light Enhancement without Paired Supervision
- 畅联“5机”,华为云WeLink勇当数字化联接器
- 某电商类网站服装商品展示页面局部(1+X Web前端开发初级 例题)
- MOT 指标汇总 (详讲 说明 含义 )
- VCP-DCV6.7学习心得
- 计算机应用基础指法实训报告,计算机基础实训报告
- SAP MM 执行事务代码VL10B 报错-4501378483 000010 Only 0 CS of material ### available-
- Week_eight
- childNodes和children的区别
- 怎样用计算机打出Abc,智能ABC输入法中的一些使用技巧
- 10本好书,助企业赢在数字化转型起跑线