UIImageView在线图片加载以及缓存优化

2016-01-14  本文已影响1761人  lele8446

UIImageView是iOS开发中经常用到的控件,通过UIImageView来加载显示网络图片更是很常遇到的场景之一。如何加载显示网络图片,提高用户体验度,我们可以通过多种途径来实现:苹果原生api,SDWebImage,其他第三方库等,这里我结合NSCache以及磁盘缓存实现了一个自己封装的UIImageView库。


直接说重点,一个好的图片缓存库大概应该包含以下几点:

  1. 异步判断是否有缓存,有就解压缩图片,返回主线程刷新UI(不卡主线程,提高用户体验)。
  2. 无缓存,异步下载图像,尽可能减少使用主线程队列。
  3. 下载成功,后台解压缩图像,返回主线程刷新UI;同时在内存和磁盘上缓存图像,并且保存解压过的图片到内存中,以避免再次解压。
  4. 可使用GCD 和 blocks,使得代码更加高效和简单。
  5. 如果可以,最好在下载后以及存入到缓存前对图像进行处理(裁剪、压缩、拉伸等)

这里说一下,在图片存入内存前预先进行decodedImageWithImage:可以提高图片的显示效率,但是经测试发现如果图片是.png格式时,是无法decoded的,所以这里做多了一个判读,当图片是png格式时则忽略decoded。关于如何判断图片,我们可以通过根据文件头来判断图片是否为png格式。

_fileManager在初始化时实现
_fileManager = [NSFileManager defaultManager];
另外缓存类还实现了清除缓存,清除指定缓存,获取缓存大小等方法,这里就不再细说了,大家可以下载demo 看看。


最后是demo地址。

上一篇下一篇

猜你喜欢

热点阅读