美文网首页
UI绘制原理和异步绘制

UI绘制原理和异步绘制

作者: 修_没毅力没心情 | 来源:发表于2020-02-25 11:53 被阅读0次
    UIView绘制原理

    调用setNeedsDispaly时候,实际上是这个view的layer调用setNeedsDispaly方法,之后相当于在这个layer上打上一个脏标记,然后并没有立即发生当前视图的绘制工作,而是在当前runloop快要结束的时候调用CALayer的display方法,进入到当前视图真正的绘制工作的流程当中。

    原因是要减少绘制次数,提升性能,所以要在当前runloop快要结束的时候调用CALayer的display方法。

    然后代理必须至少实现两个方法的其中一个,如果都实现,则调用displayLayer方法。

    系统绘制流程

    原理图中的系统绘制流程就如上图所示,图中的backing store可以理解为要上传的位图,由CALayer传给GPU。

    关于如何实现异步绘制。

    我们基于图1中的[layer.delegate displayLayer:]方法有以下两点:

    -代理负责生成对应的bitmap。

    -设置该bitmap作为layer.contents属性的值。

    异步绘制原理时序图

    通过上面的时序图来了解异步绘制。

    通过子线程的切换,借助global queue,在子线程中进行bitmap的绘制,此时主线程可以做其他的工作。等子线程绘制位图完毕,再回到主队列中提交位图,设置给CALayer的contents属性,完成一个空间的异步绘制过程。

    相关文章

      网友评论

          本文标题:UI绘制原理和异步绘制

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