NSAttributedString装载图片与UIImageView装载图片对比
来源:互联网 发布:win7共享输入网络密码 编辑:程序博客网 时间:2024/04/28 10:56
一、先简单介绍一下NSAttributedString如何装载图片:
NSAttributedString有一个类方法attributedStringWithAttachment:
参数是NSTextAttachment
,NSTextAttachment有一个叫做image
的属性。所以自然就可以将一张图片插入到NSAttributedString中然后赋值给UILabel的attributedText。
示例代码如下:
NSTextAttachment *attachment = [[NSTextAttachment alloc] init];attachment.image = [UIImage imageNamed:@"test.png"];attachment.bounds = CGRectMake(0, 0, 100, 100);NSAttributedString *attributed = [NSAttributedString attributedStringWithAttachment:attachment];UILabel *label = [[UILabel alloc] init];label.numberOfLines = 0;label.attributedText = attributed;
这种方式可以方便的做图文混排。以及图文混编。笔者就用这种方式自定义了一个可以加入图片的TextView。
二、分析NSAttributedString与UIImageView装载图片的对比。
测试条件:
- 24张图片
- 图片高度
- 用NSAttributedString与UIImageView装载同样张数的图片做内存对比
测试过程:
写两个方法,分别是用NSAttributedString和UIImageView装载相同的图片,图片高度一样,然后做内存分析。
测试结果:
当kImageHeight=10的时候,NSAttributedString的内存截图是:
UIImageView的内存截图是:
从以上两个图可以看出,NSAttributedString完胜UIImageView。当kImageHeight = 400的时候,NSAttributedString的内存截图是:
UIImageView的内存截图是:当kImageHeight = 1000的时候,NSAttributedString的内存截图是:
UIImageView的内存截图是:
从以上测试结果可以看出,无论图片多大,UIImageView加载同样张数的图片,内存一直是25M左右,上下浮动也只有1M左右。而NSAttributedString所占内存与图片大小成正比,当图片高度只有10的时候,内存只有4M左右、当图片增到1000的时候,内存随之飙升到120M以上。
对比结果:
通过以上测试和分析。我们可以知道。UIImageView加载图片的内存,并不会随着图片增大而增大。事实上,UIImage的size是不可改变的,在UIImageView上拉大图片只是拉大UIImageView的frame,所以UIImageView的内存在图片确定的情况下,是不会随着UIImageView的frame改变而改变。相反,NSAttributedString所占用的内存却是和图片大小成正比。
图片较小的情况下,优先选择NSAttributedString,可以节省一部分内存,图片大的时候,应该选择UIImageView,不然内存会飙升,很容易收到内存警告
点击下载相关Demo代码
- NSAttributedString装载图片与UIImageView装载图片对比
- delphi 图片保存,装载
- 流装载图片
- 通过XML批量装载图片
- oracle sqlldr 也能装载图片
- opencv识别步骤和图片装载
- 将bmp图片装载入图片控件(c+api)
- 如何使用GDI+装载图片对象(支持png图片)
- 链接、装载与库:可执行文件的装载
- 为你的水晶报表装载本地图片
- 为你的水晶报表装载本地图片
- 为你的水晶报表装载本地图片
- 链接、装载与库
- 装载、链接与库
- 装载、链接与库
- 装载、链接与库
- 装载、链接与库
- JS----执行与装载
- ExtJs的fireEvent事件
- 视频真实地址解析工具
- iOS和android游戏纹理优化和内存优化(cocos2d-x)
- 产品策划八:七宗罪解读の人性最深处的原始需求分析
- Delphi XE6 试用Android视频采集
- NSAttributedString装载图片与UIImageView装载图片对比
- 看了关于全职女性的文字,我想到了一些事情
- 【设计模式】——六大设计原则
- 项目用druid,长时间不访问应用,再访问又连接不上了数据库了
- 10.类别
- LeetCode 4Sum(backtrace+剪枝)
- 检测App内存泄露--LeakCanary工具
- StringUtils
- 深度学习(十六)基于2-channel network的图片相似度判别-CVPR 2015