美文网首页
UIImageView优化

UIImageView优化

作者: 朽木自雕也 | 来源:发表于2018-04-26 10:11 被阅读34次

    对于UIImageView的优化,无非就是对UIImageView加载图片进行优化,作者本人是看过YYKit、AsycnDispalyKit、SDWebImage、OpenGL ES 之后想着来写这篇文章的,在这里不讲加载网络加载过程(因为篇幅太大,还得准备配图,太麻烦了😂),本文用 swift 语言。

    图像渲染的过程

    image

    把一个图片显示在屏幕上,简单点就是分成两部分
    第一,CPU把UIImage绘制BitImage(位图)
    第二,OpenGL ES 把CPU合成的BitImage转换成纹理,因为GPU处理的单位是texture(纹理),GPU把所有的纹理数据合成渲染的颜色像素数据放入VARM(显示储存器),需要的时候就把显示出来
    简单一点就是这样(其实远远不止这些,这里不做过多讲述)
    下面这张图会更加明显


    image

    来说说问题

    如果把一张400*400px的图片放入100*100px的UIImageView中造成,在绘制的过程中会对图片的像素进行拉伸/压缩来绘制位图,这个过程是非常耗时,如果你的tableview每个cell有一个或者多个imageview,在加上快速滑动,就会造成掉帧现象

    解决方法

    1.预合成,提前把400*400px的图片裁剪成100*100px图
    2.异步绘制,把位图绘制的操作放入异步线程中去执行,绘制完成之后返回UI线程(主线程)刷新UI(参考YYAsycnDispalyLayer 的实现)

    大牛的文章:

    相关文章

      网友评论

          本文标题:UIImageView优化

          本文链接:https://www.haomeiwen.com/subject/jdlplftx.html