图片优化

UIImageView加载过程

iOS从磁盘加载一张图片,使用UIImageVIew显示在屏幕上,需要经过以下步骤:

  1. 从磁盘拷贝数据到内核缓冲区
  2. 从内核缓冲区复制数据到用户空间
  3. 生成UIImageView,把图像数据赋值给UIImageView
  4. 如果图像数据为未解码的PNG/JPG,解码为位图数据
  5. CATransaction捕获到UIImageView layer树的变化
  6. 主线程Runloop提交CATransaction,开始进行图像渲染
    1. 如果数据没有字节对齐,Core Animation会再拷贝一份数据,进行字节对齐。
    2. GPU处理位图数据,进行渲染

性能优化

缩率图

异步加载

使用Image Asset Catalogs

强制解码

在子线程对图片原始数据强制解码,然后把解码后的图片通过主线程加载 (Core Graphics 框架的 CGBitmapContextCreate)

补充

  1. 不要同时在内存中加载所有图像 内存警告时释放图片加载内存
  2. 提前写入缓存
  3. cell消失时 取消加载