IOS 多个UIImageView 加载高清大图时内存管理
IOS 多个UIImageView 加载高清大图时内存管理
当我们在某一个View 多个UIImageView,且UIImageView都显示的是高清大图,就有可能出现内存警告的问题。如果第一次进入这个view,没有发生内存警告,当再次进入这个view,如果上一次的内存没有及时释放,这一次次的累加,便可导致内存崩溃。
1,UIImage 加载图片的方式。
如果是本地图片,尽量不要使用 [UIImage imageNamed:nil]; 这种方式,如果使用这种方式加载,只要程序不退出,它便一直会在内存中。
我们可以使用 :
NSString *path = [[NSBundlemainBundle]pathForResource:@'"图片的名字" ofType:@""];
UIImage *image = [UIImageimageWithContentsOfFile:path];
那两者的优缺点就很明显了,[UIImage imageNamed:nil]; 只需加载一次,它便在内存中,所以第二次加载速度很快。而第二种加载方式由于我们将它释放掉了,会再次加载。所以选用那种方式,依你情况而定。
2,上面说的第二种方式,虽然可以释放掉,但我们要告诉人家什么时候释放。也就是说,当前显示页面不是这个view时,我们便将它释放掉:
- (void)viewWillDisappear:(BOOL)animated{
[UIImageView removeFromSuperview];
UiImageView = nil;
}
当然,当我们再次进入这个view时,便要将移除掉的view再次添加进来
- (void)viewDidAppear:(BOOL)animated{
[self addSubView:UIImageView];
}
3,上述两种方式,主要解决内存累加的问题。但如果第一次进入view,图片全部渲染在view上时,内存就崩溃了。那我们只能在图片上做文章了。我们加载的高清大图如果差不多都是3000*2000,也可能比这个还大,就算我们的程序是iPad App,iPad 4 的分辨率才多少,这些图远远大于设备的分辨率,完全是资源浪费,所以我们通常的一个做法,便是将这样的图以小尺寸渲染到view上。
推荐使用:
UIImage+Resize.h, UIImage+Resize.m
Extends the UIImage class to support resizing (optionally preserving the original aspect ratio), cropping, and generating thumbnails.
UIImage+RoundedCorner.h, UIImage+RoundedCorner.m
Extends the UIImage class to support adding rounded corners to an image.
UIImage+Alpha.h, UIImage+Alpha.m
Extends the UIImage class with helper methods for working with alpha layers (transparencies).
常用方法:
UIImage *image
UIImage *thumbImage = [imagethumbnailImage:140// This should the size of the view in collection view. example: myCell width is 20 and height is 20.
transparentBorder:0
cornerRadius:0
interpolationQuality:kCGInterpolationMedium]; //生成缩略图
// this "resizedimage" image is what you want to pass to setImage
UIImage * resizedImage = [imageresizedImage:imageview.frame.sizeinterpolationQuality:kCGInterpolationLow]; //生成你想要尺寸的图
造成的问题,要注意缩放的比例,不要导致图片变形,由于尺寸缩小,可能会导致图片模糊,注意缩小的尺寸。
综上可见,每种方法有优点,有缺点。主要依据自己的开发情况,折中使用。
IOS 多个UIImageView 加载高清大图时内存管理相关推荐
- ios 加载大量图片崩溃_加载高清大图崩溃问题
SDWebImage加载高清大图崩溃问题: 经验证没测试出来,在网上查找根源应该是在iOS7上有问题,特此记录一下 第一种:老版本SDWebImage_v4.2.0 更改源码 这里面对图片的处理是直接 ...
- 浅谈android中加载高清大图及图片压缩方式(二)
这一讲就是本系列的第二篇,一起来聊下关于android中加载高清大图的问题,我们都知道如果我们直接加载原图的话,一个是非常慢,需要等待一定时间,如果没有在一定的时间内给用户响应的话,将会极大影响用户的 ...
- android 高清图片,Android加载高清大图
前两天在面试当中被问到有没有做过加载高清大图,当时确实没有做过,听面试官提到可以动态加载图片的显示区域.回来后在网上找到了一篇鸿洋大神的博文悔啊-_-!为什么早点没有看到.废话不多说代码如下: 一.B ...
- 一招解决Android 加载高清大图
本文转自:http://blog.csdn.net/lmj623565791/article/details/49300989 最近花时间详细拜读了郭神博客的图片加载系列,感觉收获不少.正好想将自己之 ...
- 加载大量图片内存暴增导致闪退 Terminated due to memory issue(内存暴增SDWebImage加载高清大图崩溃)
上传图片一定要压缩,一定要压缩,一定要压缩.(目前手机拍摄的图片一张几M,上传后不压缩,如果几十张一块加载展示时内存画面有点美!如果是后台上传除了需要高清以外的图也需要压缩处理) 下载大量图片时一定要 ...
- 关于Andorid加载高清大图(仿sina weibo 里面的长图效果)
用过sina微博客户端的同学都知道,它里面有一个长图功能. 需求是可以显示比如10000X10000(px)的图片. 如果你直接用bitmap加载图片文件(或者是从inputstream获取到,然后转 ...
- ios 图片加载内存尺寸_iOS加载超清大图内存暴涨问题解决
加载超清大图是会引起内存爆表的问题,最近一直困扰着我. SDWebImage在加载大图时做的不是很好,加载大图内存爆表.YYWebImage会好一点,但还是不行. 当不要求图片质量的情况下,最好是在上 ...
- AsyncLoadLocalImage ios 加载本地高清大图
如果你的iOS项目中需要加载项目中或者沙盒中的多张高清大图时,希望这个框架能助你一臂之力. If your iOS project needs to be loaded multi high qual ...
- Android_性能优化之ViewPager加载成百上千高清大图oom解决方案
欢迎加入技术谈论群:714476794 一.背景 最近做项目需要用到选择图片上传,类似于微信.微博那样的图片选择器,ContentResolver读取本地图片资源并用RecyclerView+Glid ...
- iOS控制器与视图加载方法
转载记录, 请看原文: 1. iOS中的各种加载方法(initWithNibName,loadNibNamed,initWithCoder,awakeFromNib等等)简单使用 http://w ...
最新文章
- python中基本程序结构_关于Python 程序格式框架的描述,正确的是( )
- Visual Studio2005入门.Net系列视频教程
- oracle用户登录的认证方式
- gin ajax 获取请求参数,go的gin框架从请求中获取参数的方法
- 写游戏软件要学什么_为什么要写关于您所知道的(或所学到的)的内容
- 计算机操作员高级工试题一,计算机操作员高级工操作题复习资料
- AUTOCAD建模足球实体
- web前端开发基础入门篇(一)
- Twaver-HTML5基础学习(2)基本数据元素(Data)
- 在线思维导图制作技巧汇总:超简单思维导图绘制方法
- 2004. 职员招聘人数
- 电脑硬盘分区太多?如何合并分区?
- Outlook/Microsfot邮件配置:QQ邮箱/腾讯企业邮箱
- 地图数据设计(四):地图比例尺
- centos7安装后ping不通外网问题解决
- Xilinx XC7Z020双核ARM+FPGA开发板试用合集——自定义硬件工程
- java全栈系列之JavaSE--数组的使用025
- mysql fabric搭建_MySQL Fabric 安装部署
- 1-3年开发的java学习规划
- java 中输入字符的方法(顺便判断元音辅音)
热门文章
- 异序二分查找 二分查找方程根 二分查找重复元素最后一个
- 【XLL 框架库函数】 TempMissing/TempMissing12
- 关于T_SQL中声明变量类型的基础知识。
- 在API中发现的好东东
- 浏览器,图片格式及特点
- Django+xadmin的安装与配置
- 9.1.4 前端 - HTML body标签 - 标题,段落,分割线,换行,特殊符号,列表,超链接,图片,div/span,表格,表单,input标签,多行文本,单选/多选,下拉,按钮...
- Tensorflow的最佳实践
- Hibernate缓存研究
- JS中style属性