iOS全屏展示图片(三种情况实现)

原创 2017年01月03日 14:47:53

最近遇到一个需求:放大在页面中的图片,以达到展示的效果

这是一个全屏展示图片的小demo,主要分三种情况来实现:

1.正常页面中的ImageView

///主要使用了这两个方法
+ (void)showImage:(UIImageView*)avatarImageView
{
UIImage *image =avatarImageView.image;
// 获得根窗口
UIWindow *window =[UIApplication sharedApplication].keyWindow;
UIView *backgroundView =[[UIView alloc]initWithFrame:CGRectMake(0, 0, ZOOMVCWIDTH, ZOOMVCHEIGHT)];
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];
}];
}

2.Tableview的cell上的图片

///tableview cell这个,主要使用了UIView的类方法, animateWithxxx
UIImageView *imageView = (UIImageView *)[cell.contentView viewWithTag:9999];

//小图的frame
self.oldFrame = CGRectMake(cell.frame.origin.x+imageView.frame.origin.x, cell.frame.origin.y+imageView.frame.origin.y-self.tabView.contentOffset.y, imageView.frame.size.width, imageView.frame.size.height); //得到cell上的图片位置

if (![self.bigImgView superview]) {

self.bigImgView.image = imageView.image;

[self.view.window addSubview:self.bigImgView];



self.bigImgView.frame = self.oldFrame;
[UIView animateWithDuration:0.5 animations:^{

self.bigImgView.frame=CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);


} completion:^(BOOL finished) {

[UIApplication sharedApplication].statusBarHidden=YES;

}];

}

3.CollectioinView的cell上的图片

collection使用了一个第三方,冯大师的PhotoBroswer
/*
*  展示网络图片
*/
-(void)networkImageShow:(NSUInteger)index{


__weak typeof(self) weakSelf=self;

[PhotoBroswerVC show:self type:PhotoBroswerVCTypeModal index:index photoModelBlock:^NSArray *{


NSArray *networkImages=@[
@"http://www.netbian.com/d/file/20150519/f2897426d8747f2704f3d1e4c2e33fc2.jpg",
@"http://www.netbian.com/d/file/20130502/701d50ab1c8ca5b5a7515b0098b7c3f3.jpg",
@"http://www.netbian.com/d/file/20110418/48d30d13ae088fd80fde8b4f6f4e73f9.jpg",
@"http://www.netbian.com/d/file/20150318/869f76bbd095942d8ca03ad4ad45fc80.jpg",
@"http://www.netbian.com/d/file/20110424/b69ac12af595efc2473a93bc26c276b2.jpg",
@"http://www.netbian.com/d/file/20130502/701d50ab1c8ca5b5a7515b0098b7c3f3.jpg",
@"http://www.netbian.com/d/file/20110418/48d30d13ae088fd80fde8b4f6f4e73f9.jpg",
@"http://www.netbian.com/d/file/20150318/869f76bbd095942d8ca03ad4ad45fc80.jpg",
@"http://www.netbian.com/d/file/20110424/b69ac12af595efc2473a93bc26c276b2.jpg",
@"http://www.netbian.com/d/file/20130502/701d50ab1c8ca5b5a7515b0098b7c3f3.jpg",
@"http://www.netbian.com/d/file/20110418/48d30d13ae088fd80fde8b4f6f4e73f9.jpg",
@"http://www.netbian.com/d/file/20150318/869f76bbd095942d8ca03ad4ad45fc80.jpg",
@"http://www.netbian.com/d/file/20110424/b69ac12af595efc2473a93bc26c276b2.jpg",

@"http://www.netbian.com/d/file/20140522/3e939daa0343d438195b710902590ea0.jpg",

@"http://www.netbian.com/d/file/20141018/7ccbfeb9f47a729ffd6ac45115a647a3.jpg",
];

NSMutableArray *modelsM = [NSMutableArray arrayWithCapacity:networkImages.count];
for (NSUInteger i = 0; i< networkImages.count; i++) {

PhotoModel *pbModel=[[PhotoModel alloc] init];
pbModel.mid = i + 1;
//            pbModel.title = [NSString stringWithFormat:@"这是标题%@",@(i+1)];
//            pbModel.desc = [NSString stringWithFormat:@"我是一段很长的描述文字我是一段很长的描述文字我是一段很长的描述文字我是一段很长的描述文字我是一段很长的描述文字我是一段很长的描述文字%@",@(i+1)];
pbModel.image_HD_U = networkImages[i];

//源frame
UIImageView *imageV =(UIImageView *) weakSelf.collectionView.subviews[i];
pbModel.sourceImageView = imageV;

[modelsM addObject:pbModel];
}

return modelsM;
}];
}

具体代码详见github,如果帮到了您,麻烦给个star,O(∩_∩)O谢谢

版权声明:本文为博主原创文章,未经博主允许不得转载。

ios显示图片的方法

ios显示和加载图片的方法
  • dhj393338
  • dhj393338
  • 2016年09月13日 14:12
  • 1331

iOS UIImage UIImageView 展示图片 不变形 处理

imageView.clipsToBounds = YES; imageView.contentMode = UIViewContentModeScaleAspectFill; 展示图片...
  • Leemin_ios
  • Leemin_ios
  • 2017年03月02日 14:22
  • 1506

iOS-Gif图片展示N种方式(原生+第三方)

原生方法:1.UIWebView 特点:加载速度略长,性能更优,播放的gif动态图更加流畅。//动态展示GIF图片-WebView -(void)showGifImageWithWebView{ ...
  • qiuxuewei2012
  • qiuxuewei2012
  • 2016年03月02日 20:29
  • 5168

iOS展示异步网络图片接口函数

  • 2015年07月10日 12:32
  • 2KB
  • 下载

iOS开发笔记:实现点击图片放大全屏

最近遇到这个问题,点击图片,让图片全屏。参考了一些博客和源码,大概明白了是怎么实现这个效果的。 这里就简单说明一下: 原理和之前的实现修改头像有点类似:修改头像的时候,我们给imageView添加一个...
  • qq_30513483
  • qq_30513483
  • 2016年04月10日 22:34
  • 1243

iOS实现图片自动轮播展示

一、需要实现的效果如下图1,首页图片自动轮播展示,其中图片从网络异步加载,加载过程用风火轮显示加载中,如图2。 本文参考了以下博客文章: http://www.haodaima.net/art/2...
  • dolacmeng
  • dolacmeng
  • 2015年05月01日 10:14
  • 3240

iOS 图片显示原理

iOS中开发中,常常用到UIImageView来显示图片,但是是如何展示出来的? iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步骤: 1 从磁盘拷贝数据到内核缓冲区 ...
  • potato512
  • potato512
  • 2015年02月10日 11:07
  • 847

iOS图片逐渐加载的效果实现

首先,放一张效果图,在手机的开发者模式下调成3G网络来模拟慢网速,可以清楚的看到图片是一点一点的显示的,也就是下载多少,显示多少。 首先图片处理,需要用到ImageIO框架,主要介绍三个函数,CG...
  • wddyzzw
  • wddyzzw
  • 2017年12月19日 21:27
  • 116

iOS中HTML文本的展示

HTML文本的显示依靠NSAttributedString这个类NSHTMLTextDocumentType 只是NSDocumentTypeDocumentAttribute key一种可能的值。你...
  • shang1219178163
  • shang1219178163
  • 2016年03月17日 13:41
  • 1488

iOS全景浏览App涉及到的技术

一、网络通信 1. 获取服务器数据 AFHTTPRequestOperationManager *mgr = [AFHTTPRequestOperationManager manager]; ...
  • u014629553
  • u014629553
  • 2016年08月12日 10:28
  • 2763
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS全屏展示图片(三种情况实现)
举报原因:
原因补充:

(最多只允许输入30个字)