IOS中实现图片点击全屏预览_IOS

如果你感觉累,那就对了那是因为你在走上坡路。。这句话似乎有点道理的样子,时常提醒自己无论走到哪都不要忘记自己当初为什么出发。有时想想感觉有的东西可以记录一下,就把它记录下来吧,这次想写一下关于单张图片点击全屏预览的问题,网上查了一些大神写的有的功能确实很强大但自己暂时想要的只是简单的功能就好,还有些方法自己也没弄出想要的效果,最后写了一个比较简单的点击单张图片的全屏预览和双指捏合缩小放大,可能有时要对图片做一些处理,这里放大后只是显示同一张图片并未做处理,下面直接贴出代码

//
// ViewController.m
// XWZoomImageView
//
// Created by xiao on 15/11/13.
// Copyright  2015年 xiao. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *picView;
@property (weak, nonatomic) UIScrollView *scrollView;
@property (weak, nonatomic) UIImageView *lastImageView;
@property (nonatomic, assign)CGRect originalFrame;
@property (nonatomic, assign)BOOL isDoubleTap;
@end

@implementation ViewController

- (void)viewDidLoad {
 [super viewDidLoad];

 self.picView.userInteractionEnabled = YES;
 //添加单击手势
 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showZoomImageView:)];

 [self.picView addGestureRecognizer:tap];

}

-(void)showZoomImageView:(UITapGestureRecognizer *)tap
{
 if (![(UIImageView *)tap.view image]) {
  return;
 }
 //scrollView作为背景
 UIScrollView *bgView = [[UIScrollView alloc] init];
 bgView.frame = [UIScreen mainScreen].bounds;
 bgView.backgroundColor = [UIColor blackColor];
 UITapGestureRecognizer *tapBg = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapBgView:)];
 [bgView addGestureRecognizer:tapBg];

 UIImageView *picView = (UIImageView *)tap.view;

 UIImageView *imageView = [[UIImageView alloc] init];
 imageView.image = picView.image;
 imageView.frame = [bgView convertRect:picView.frame fromView:self.view];
 [bgView addSubview:imageView];

 [[[UIApplication sharedApplication] keyWindow] addSubview:bgView];

 self.lastImageView = imageView;
 self.originalFrame = imageView.frame;
 self.scrollView = bgView;
 //最大放大比例
 self.scrollView.maximumZoomScale = 1.5;
 self.scrollView.delegate = self;

 [UIView animateWithDuration:0.5 animations:^{
  CGRect frame = imageView.frame;
  frame.size.width = bgView.frame.size.width;
  frame.size.height = frame.size.width * (imageView.image.size.height / imageView.image.size.width);
  frame.origin.x = 0;
  frame.origin.y = (bgView.frame.size.height - frame.size.height) * 0.5;
  imageView.frame = frame;
 }];
}

-(void)tapBgView:(UITapGestureRecognizer *)tapBgRecognizer
{
 self.scrollView.contentOffset = CGPointZero;
 [UIView animateWithDuration:0.5 animations:^{
  self.lastImageView.frame = self.originalFrame;
  tapBgRecognizer.view.backgroundColor = [UIColor clearColor];
 } completion:^(BOOL finished) {
  [tapBgRecognizer.view removeFromSuperview];
  self.scrollView = nil;
  self.lastImageView = nil;
 }];
}

//返回可缩放的视图
-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
 return self.lastImageView;
}

最后同样带上一张图片吧,大致是这样子

再给大家分享一则IOS中点击图片后放大的代码

.h文件-----------------------------------------------------------------
#import
@interface ZoomImage : NSObject
/**
 *@brief点击图片放大,再次点击缩小
 *
 *@param oldImageView 头像所在的imageView
 */
+(void)showImage:(UIImageView*)avatarImageView;
@end
.m文件-----------------------------------------------------------------
#import "ZoomImage.h"
static CGRect oldframe;
@implementation ZoomImage
+(void)showImage:(UIImageView*)avatarImageView
{
 UIImage *image =avatarImageView.image;
 // 获得根窗口
 UIWindow *window =[UIApplication sharedApplication].keyWindow;
 UIView *backgroundView =[[UIView alloc]initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];
 oldframe =[avatarImageView convertRect:avatarImageView.bounds toView:window];
 backgroundView.backgroundColor =[UIColor blackColor];
 backgroundView.alpha =0.5;
 UIImageView *imageView =[[UIImageView alloc]initWithFrame:oldframe];
 imageView.image =image;
 imageView.tag =1;
 [backgroundView addSubview:imageView];
 [window addSubview:backgroundView];
 //点击图片缩小的手势
 UITapGestureRecognizer *tap =[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideImage:)];
 [backgroundView addGestureRecognizer:tap];
 [UIView animateWithDuration:0.3 animations:^{
  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);
  backgroundView.alpha =1;
 }];
}
+(void)hideImage:(UITapGestureRecognizer *)tap{
 UIView *backgroundView =tap.view;
 UIImageView *imageView =(UIImageView *)[tap.view viewWithTag:1];
 [UIView animateWithDuration:0.3 animations:^{
  imageView.frame =oldframe;
  backgroundView.alpha =0;
 } completion:^(BOOL finished) {
  [backgroundView removeFromSuperview];
 }];
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ios点击图片全屏
h5点击图片全屏预览、jq 点击全屏预览、js 实现点击 图片预览、点击图片实现预览效果、ios多图全屏预览,以便于您获取更多的相关知识。

时间: 2024-10-30 17:43:57

IOS中实现图片点击全屏预览_IOS的相关文章

Android仿微信图片点击全屏效果_Android

废话不多说先看下效果 先是微信的 再是模仿的 先说下实现原理再一步步分析 这里总共有2个Activity一个就是主页一个就是显示我们图片效果的页面参数通过Intent传送素材内容均来自网络(感谢聪明的蘑菇) 图片都是Glide异步下的下的下的重要的事情说三次然后就是用动画做放大操作然后显示出来了并没有做下载原图的实现反正也是一样 下载下来Set上去而且动画都不需要更简便. OK我们来看分析下 obj目录下分别创建了2个对象一个用来使用来处理显示页面的图片尺寸信息以及位置信息还有一个是用来附带UR

Android仿微信图片点击全屏效果

废话不多说,先看下效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Intent传送,素材内容均来自网络,(感谢聪明的蘑菇) 图片都是Glide异步下的,下的,下的重要的事情说三次,然后就是用动画做放大操作然后显示出来了(并没有做下载原图的实现,反正也是一样 下载下来Set上去而且动画都不需要更简便). OK,我们来看分析下 obj,目录下分别创建了2个对象,一个用来使用来处理显示页面的图片尺寸信息以

关于微信上网页图片点击全屏放大效果_javascript技巧

实现微信上网页的图片点击后全屏还可以可以缩放,这个功能是别人做的,可是捏点击后屏幕直接黑屏了,图片没有显示出来.这个代码在网上搜一下,挺多类似的. 先上代码. function arrayToJson(o) { var r = []; if (typeof o == "string") return "\"" + o.replace(/([\'\"\\])/g, "\\$1").replace(/(\n)/g, "\

Word 2010中如何加入打印全屏预览按钮

如何能让word2010在打印中无法做到全屏预览按钮,不过可以从[快速访问工具栏]中添加! 1.打开word2010 2.点击[文件],点击[选项],就是退出按钮的上面. 3.选择[快速访问工具栏],在[从下列位置选择命令]下面把[常用命令]选择为[所有命令] 4.左面选择[打印预览编辑模式],点中间的[添加]按钮,最后点[确定].PK了,看看窗口第一行左上角的几个按钮,是否有以前的预览打印图标了. 5.对了,如果没有,那就是快速访问栏没有启动,需要设置一下.就是在工具栏(就是开始.插入的下面区

Excel2010如何显示全屏预览打印

  1.打开Excel表格,点击工具栏的"文件"→"选项" 2.在Excel选项里选择"自定义功能区"从"不再功能区中的命令"里找到"全屏打印预览",并将其添加到功能区里. 3.添加完毕后我们就可以在工具栏看到"全屏打印预览"操作选项 4.点击全屏打印预览就可以全屏显示打印预览啦,是不是很方便呢?

Excel2010如何显示全屏预览打印?

  1.打开Excel表格,点击工具栏的"文件"→"选项" 2.在Excel选项里选择"自定义功能区"从"不再功能区中的命令"里找到"全屏打印预览",并将其添加到功能区里. 3.添加完毕后我们就可以在工具栏看到"全屏打印预览"操作选项 4.点击全屏打印预览就可以全屏显示打印预览啦,是不是很方便呢?

求解,iOS中如何实现点击按钮切换按钮背景图,并且通过导航栏返回并再次进入后按钮还是那个背景图

问题描述 求解,iOS中如何实现点击按钮切换按钮背景图,并且通过导航栏返回并再次进入后按钮还是那个背景图 就是想在一个页面做一个收藏的按钮,如果用户点击按钮按钮的背景图就变成已收藏的背景图,并且保存这一状态,在下一次进入页面的时候还是已收藏的状态,求高手指点 解决方案 你这个没有数据交互么? 正常应该是用户点击收藏,然后后台提交,数据库响应成功后在回调里改变一下按钮状态和相应数据. 解决方案二: 你这个背景图片切换的数量多不?如果就2张图片来回切换,可以写个单例,记录下来你的点击状态,根据状态来

zepto fullpage js-zepto.fullpage.js想禁用手指上下滑屏的事件,只保留点击全屏滑动的事件的话该怎么做呢?

问题描述 zepto.fullpage.js想禁用手指上下滑屏的事件,只保留点击全屏滑动的事件的话该怎么做呢? 有了解zepto.fullpage.js的么?我如果想禁用手指上下滑屏的事件,只保留点击全屏滑动的事件的话该怎么做呢? *{ margin: 0; padding: 0; } html,body{ height: 100%; } #banner { height: 100%; overflow: hidden; } .section{ height: 100%; } .section1

Android 中使用EditText 点击全选再次点击取消全选功能_Android

最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标.点击屏幕除地址栏其他位置时,键盘隐藏,隐藏光标. 大部分浏览器都是这样的逻辑,这样可以提高用户体验,减少操作. 代码很简单,这里我简化了逻辑,页面只有一个EditText. 布局文件如下:里面有两个属性需要注意 android:focusable="true" android:selectAllOnFocus="true" 完整布局文件 <?xml versio