//
//  UIImageView+Utils.h
//  OpenWorkr
//
//  Created by 冰凉的枷锁 on 2017/3/6.
//  Copyright © 2017年 Eden. All rights reserved.
//#import <UIKit/UIKit.h>@interface UIImageView (Utils) <UIGestureRecognizerDelegate>- (void)showBigImageInWindow;@end
//
//  UIImageView+Utils.m
//  OpenWorkr
//
//  Created by 冰凉的枷锁 on 2017/3/6.
//  Copyright © 2017年 Eden. All rights reserved.
//#import "UIImageView+Utils.h"@implementation UIImageView (Utils)static CGRect oldframe;- (void)showBigImageInWindow {UIImageView *currentImageview = self;UIImage *image = currentImageview.image;UIWindow *window = [UIApplication sharedApplication].keyWindow;UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];backgroundView.backgroundColor = [UIColor colorWithWhite:0.7 alpha:1];//当前imageview的原始尺寸->将像素currentImageview.bounds由currentImageview.bounds所在视图转换到目标视图window中,返回在目标视图window中的像素值oldframe = [currentImageview convertRect:currentImageview.bounds toView:window];
//    [backgroundView setBackgroundColor:[UIColor colorWithRed:107 green:107 blue:99 alpha:0.6]];//此时视图不会显示[backgroundView setAlpha:0];//将所展示的imageView重新绘制在Window中UIImageView *imageView = [[UIImageView alloc] initWithFrame:oldframe];[imageView setUserInteractionEnabled:YES];[imageView setImage:image];[imageView setTag:10];[backgroundView addSubview:imageView];[window addSubview:backgroundView];//向imageView添加手势 缩放图片UIPanGestureRecognizer *pan =[[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(panAction:)];//添加到指定视图[imageView addGestureRecognizer:pan];UIPinchGestureRecognizer *pinch =[[UIPinchGestureRecognizer alloc]initWithTarget:self action:@selector(pinchAction:)];[imageView addGestureRecognizer:pinch];UIRotationGestureRecognizer *rotation =[[UIRotationGestureRecognizer alloc]initWithTarget:self action:@selector(rotationAction:)];[imageView addGestureRecognizer:rotation];pinch.delegate = self;rotation.delegate = self;//添加点击事件同样是类方法 -> 作用是再次点击回到初始大小UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideImageView:)];[backgroundView addGestureRecognizer:tapGestureRecognizer];//动画放大所展示的ImageView[UIView animateWithDuration:0.4 animations:^{CGFloat y,width,height;y = ([UIScreen mainScreen].bounds.size.height - image.size.height * [UIScreen mainScreen].bounds.size.width / image.size.width) * 0.5;width = [UIScreen mainScreen].bounds.size.width;//高度 根据图片宽高比设置height = image.size.height * [UIScreen mainScreen].bounds.size.width / image.size.width;[imageView setFrame:CGRectMake(0, y, width, height)];//重要! 将视图显示出来[backgroundView setAlpha:1];} completion:^(BOOL finished) {}];}/***  恢复imageView原始尺寸**  @param tap 点击事件*/
- (void)hideImageView:(UITapGestureRecognizer *)tap{UIView *backgroundView = tap.view;//原始imageviewUIImageView *imageView = [tap.view viewWithTag:10];//恢复[UIView animateWithDuration:0.4 animations:^{[imageView setFrame:oldframe];[backgroundView setAlpha:0];} completion:^(BOOL finished) {//完成后操作->将背景视图删掉[backgroundView removeFromSuperview];}];
}//创建平移事件
-(void)panAction:(UIPanGestureRecognizer *)pan
{UIImageView *imageView = (UIImageView *)pan.view;if (!imageView) {return ;}//获取手势的位置CGPoint position =[pan translationInView:imageView];//通过stransform 进行平移交换imageView.transform = CGAffineTransformTranslate(imageView.transform, position.x, position.y);//将增量置为零[pan setTranslation:CGPointZero inView:imageView];
}//添加捏合事件
-(void)pinchAction:(UIPinchGestureRecognizer *)pinch
{UIImageView *imageView = (UIImageView *)pinch.view;if (!imageView) {return ;}//通过 transform(改变) 进行视图的视图的捏合imageView.transform = CGAffineTransformScale(imageView.transform, pinch.scale, pinch.scale);//设置比例 为 1pinch.scale = 1;
}//旋转事件
-(void)rotationAction:(UIRotationGestureRecognizer *)rote
{UIImageView *imageView = (UIImageView *)rote.view;if (!imageView) {return ;}//通过transform 进行旋转变换imageView.transform = CGAffineTransformRotate(imageView.transform, rote.rotation);//将旋转角度 置为 0rote.rotation = 0;
}#pragma gesture delegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {return YES;
}@end

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

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

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

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

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

  3. 用C#编写一个图片浏览器,实现鼠标控制图片的平移缩放与图片的灰度化

    1. 界面设计 如图1 所示:一个名为ImView 的Form 只中包含有一个名为picturebox 的Picturebox.图2 是它的运行结果.该程序的界面设计较为简单,主要根据鼠标行为及键盘按 ...

  4. ios图片添加文字或者水印

    http://www.tuicool.com/articles/nYNFVj   mark 一般在客户端做图片处理的数量不宜太多,因为受设备性能的限制,如果批量的处理图片,将会带来交互体验性上的一些问 ...

  5. iOS 图片添加文字水印

    // 图片添加文字水印 + (UIImage *)WaterImageWithImage:(UIImage *)image{//1.开启上下文UIGraphicsBeginImageContextWi ...

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

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

  7. C语言数字图像处理---1.5图像基本变换之平移缩放旋转

    本篇作为新年到来前的最后一篇,提前祝大家新年快乐! 图像几何变换又叫做图像基本变换,主要包括图像平移.图像缩放和图像旋转几个部分,当然还有图像镜像等简单的内容.图像基本变换是图像处理的基本内容,是学习 ...

  8. 线性代数:矩阵变换图形(三维平移缩放旋转)

    紧接上一篇:http://blog.csdn.net/yinhun2012/article/details/79544205 这篇博文我只是准备对上一篇博文的内容进行扩展,因为上一篇我写完二维xy仿射 ...

  9. opengl矩阵变换与平移缩放旋转

    2019独角兽企业重金招聘Python工程师标准>>> 坐标系: 1.右手坐标系 2.左手坐标系 左手坐标系是X轴向右,Y轴向上,Z轴向前,右手坐标系的Z轴正好相反,是指向" ...

最新文章

  1. 台积电2纳米获得重大突破
  2. byte数组和正数BigInteger之间的相互转换
  3. windbg模拟器不准确现象
  4. Win7如何设置多个IP地址
  5. 【POJ - 3159】Candies (差分约束,卡SPFA)
  6. 嘉年华,历数风流人物
  7. MySQL生产常用SQL语句汇总
  8. 怎样删了系统升级服务器,如何优雅的搞垮服务器,再优雅的救活
  9. 网络传输---HttpURLConnection
  10. EXCHANGE13/16反恶意软件保护
  11. android 写空指针,写下文本内容时bufferedwriter一直显示空指针,求指教
  12. 云计算机资源池,IaaS云资源池-云计算.PDF
  13. tableau 发布
  14. zibll子比主题6.7用户徽章功能详解及配置教程[V6.7新功能]
  15. 访问本地环境时出现The requested URL / was not found on this server.
  16. qt代码着呢么换行_离我睡觉还早着呢...
  17. 郴州职高哪个学计算机好,2021湖南郴州有什么职高学校
  18. Windows系统,多开微信(电脑版)
  19. 怎么看计算机配件型号,如何看硬件参数
  20. oracle ola_访谈和书摘:Ola Bini,“实用的JRuby on Rails Web 2.0项目”

热门文章

  1. 生物工程学计算机么,你的专业被“刻板印象”了吗?看看这些被误解的专业,辛酸又搞笑...
  2. 用 Python 制作关不掉的端午安康弹窗!恶作剧一下!
  3. java调用多条cmd命令_Java中调用多条cmd命令
  4. 回收站数据恢复:回收站不见了?无法打开回收站?
  5. java 编写抽象类Animal,JAVA 抽象类,抽象方法
  6. excel下拉菜单自动匹配_自动将新项目添加到Excel数据验证下拉菜单
  7. 2022-01-10 每日打卡:难题精刷
  8. Livox 时间同步
  9. 什么是递归(前序遍历)
  10. rk3128有多少个bank_rk3128网络机顶盒一些测试结果