图片点击放大,再次点击返回原视图.完美封装,一个类一句代码即可调用.IOS完美实现

创建了一个专门用于放大图片的类,以下为.h文件

  1. #import <Foundation/Foundation.h>
  2. @interface SJAvatarBrowser : NSObject
  3. /**
  4. *  @brief  浏览头像
  5. *
  6. *  @param  oldImageView    头像所在的imageView
  7. */
  8. +(void)showImage:(UIImageView*)avatarImageView;
  9. @end

以下为.m文件

  1. #import "SJAvatarBrowser.h"
  2. static CGRect oldframe;
  3. @implementation SJAvatarBrowser
  4. +(void)showImage:(UIImageView *)avatarImageView{
  5. UIImage *image=avatarImageView.image;
  6. UIWindow *window=[UIApplication sharedApplication].keyWindow;
  7. UIView *backgroundView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
  8. oldframe=[avatarImageView convertRect:avatarImageView.bounds toView:window];
  9. backgroundView.backgroundColor=[UIColor blackColor];
  10. backgroundView.alpha=0;
  11. UIImageView *imageView=[[UIImageView alloc]initWithFrame:oldframe];
  12. imageView.image=image;
  13. imageView.tag=1;
  14. [backgroundView addSubview:imageView];
  15. [window addSubview:backgroundView];
  16. UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideImage:)];
  17. [backgroundView addGestureRecognizer: tap];
  18. [UIView animateWithDuration:0.3 animations:^{
  19. imageView.frame=CGRectMake(0,([UIScreen mainScreen].bounds.size.height-image.size.height*[UIScreen mainScreen].bounds.size.width/image.size.width)/2, [UIScreen mainScreen].bounds.size.width, image.size.height*[UIScreen mainScreen].bounds.size.width/image.size.width);
  20. backgroundView.alpha=1;
  21. } completion:^(BOOL finished) {
  22. }];
  23. }
  24. +(void)hideImage:(UITapGestureRecognizer*)tap{
  25. UIView *backgroundView=tap.view;
  26. UIImageView *imageView=(UIImageView*)[tap.view viewWithTag:1];
  27. [UIView animateWithDuration:0.3 animations:^{
  28. imageView.frame=oldframe;
  29. backgroundView.alpha=0;
  30. } completion:^(BOOL finished) {
  31. [backgroundView removeFromSuperview];
  32. }];
  33. }
  34. @end

引入此类之后,为自己需要放大的imageView添加tap手势

  1. UITapGestureRecognizer *tap  = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(magnifyImage)];
  2. [self.imageView addGestureRecognizer:tap];
  1. - (void)magnifyImage
  2. {
  3. NSLog(@"局部放大");
  4. [SJAvatarBrowser showImage:self.imageView];//调用方法
  5. }

转载请声明源地址http://blog.csdn.net/u013082522/article/details/18445901

ios开发图片点击放大的更多相关文章

  1. 李洪强iOS开发之- 点击屏幕遮挡键盘

    李洪强iOS开发之- 点击屏幕遮挡键盘 实现的效果:  01 - 给当前的view添加点击事件,使点击屏幕的时候,让键盘退出 /** * 点击屏幕 隐藏键盘 * * @param tap */-(vo ...

  2. viewer && ImageFlow 图片滚动组件 图片点击放大 可以滚轮放大缩小 viewer

    ImageFlow https://finnrudolph.com/products/imageflow https://github.com/countzero/ImageFlow http://w ...

  3. iOS开发-图片高斯模糊效果

    iOS开发的时候有的时候需要将图片设置模糊,或者通过点击下拉方法,去除模糊,一切都是为了应用更受用户欢迎,iOS7之后半透明模糊效果得到大范围使用的比较大,现在也可以看到很多应用局部用到了图片模糊效果 ...

  4. Android中Textview显示Html,图文混排,支持图片点击放大

    本文首发于网易云社区 对于呈现Html文本来说,Android提供的Webview控件可以得到很好的效果,但使用Webview控件的弊端是效率相对比较低,对于呈现简单的html文本的话,杀鸡不必使用牛 ...

  5. iOS开发图片加载的内存问题及优化方案

    原创作者:Magic-Unique 原文地址:https://github.com/Magic-Unique/HXImage猿吧 - 资源共享论坛: http://www.coderbar.cn 做最 ...

  6. vue图片点击放大功能

    因项目需求(ui框架element-ui),需要实现图片的点击放大,还要能旋转以及上下切换.当时第一反应,element-ui好像没有这样的组件,就想过自己写,但是那个旋转翻页上下切换感觉有点麻烦,不 ...

  7. 动画--android图片点击放大动画,并遮挡旁边的控件

    http://blog.csdn.net/s13488941815/article/details/40649823: 首先是点击放大可以使用android自带的缩放动画,因为要遮盖其他控件,就需要控 ...

  8. [置顶] ios 网页中图片点击放大效果demo

    demo功能:点击网页中的图片,图片放大效果的demo.iphone6.1 测试通过. demo说明:通过webview的委托事件shouldStartLoadWithRequest来实现. demo ...

  9. IOS开发-图片上传

    目前IOS端开发,图片上传到服务器分为两种,一种是直接上到服务器,一种是借助第三方储存(减少服务器压力). 一.直接上传到服务器 /** * 代码演示 */ //*******UIImagePNGRe ...

随机推荐

  1. jQuery 遍历用法

    jQuery 遍历 DOM 树 parent() 方法返回被选元素的直接父元素(找爸爸). parents() 方法返回被选元素的所有祖先元素,它一路向上直到文档的根元素 (找长辈). parents ...

  2. [大牛翻译系列]Hadoop(20)附录A.10 压缩格式LZOP编译安装配置

    附录A.10 LZOP LZOP是一种压缩解码器,在MapReduce中可以支持可分块的压缩.第5章中有一节介绍了如何应用LZOP.在这一节中,将介绍如何编译LZOP,在集群做相应配置. A.10.1 ...

  3. php出现“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误的一种情况,及解决方法

    PHP中的“syntax error, unexpected T_PAAMAYIM_NEKUDOTAYIM”错误,可能是因为美元符号$的误用,看下面一种情况 class Test{         s ...

  4. JS遇到的问题解决

    1.input 里使用onclick事件,整整花了1个半小时,onclick里面直接用Location.href不需要加<script></script> <?php / ...

  5. pandas库学习笔记(一)Series入门学习

    Pandas基本介绍: pandas is an open source, BSD-licensed (permissive free software licenses) library provi ...

  6. printf的格式控制的完整格式

    printf的格式控制的完整格式:%  -  0  m.n  l或h  格式字符下面对组成格式说明的各项加以说明:①%:表示格式说明的起始符号,不可缺少.②-:有-表示左对齐输出,如省略表示右对齐输出 ...

  7. Python中docstring文档的写法

    该写法根据Python的PEP 257文档总结. 类的函数称为方法(method),模块里的函数称为函数(function) 每一个包,模块,类,函数,方法都应该包含文档,包括类的__init__方法 ...

  8. Eclipse 下 opennms 开发环境搭建

    1.eclipse3.5或更高版本,并且使用纯净的java版.下载地址:Eclipse for Java Developers. 2.安装需要的插件.通过Help/Install New Softwa ...

  9. useradd命令详解

    功能说明:建立用户帐号.语 法:useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g ...

  10. iOS开发 适配iOS10以及Xcode8-b

    现在在苹果的官网上,我们已经可以下载到Xcode8的GM版本了,加上9.14日凌晨,苹果就要正式推出iOS10系统的推送了,在此之际,iOS10的适配已经迫在眉睫啦,不知道Xcode8 beat版本, ...