UI绘制原理和异步绘制

2020-06-01  本文已影响0人  Stago

通过下图了解异步绘制的机制和流程:
左侧是一个主队列,右侧是一个全局并发队列,假如在某一时机调用了setNeedsDisplay,在当前runloop将要结束的时候会由系统调用视图所对应layer的display方法,然后如果代理实现了displayLayer函数的时候,会调用代理的displayerLayer函数方法,然后会通过子线程的切换,在子线程当中去做位图的绘制,此时主线程可以做一些其他的工作。
在全局并发队列子线程当中所做的工作主要有这么几个步骤,第一个是通过CGBitmapContextCreate() 来创建位图的上下文,然后通过CoreGraphic的相关API做当前UI的一些绘制工作,之后我们再通过CoreGraphic的相关函数CGBitmapContextCreateImage来根据当前所绘制的上下文生成一张CGImage图片,再回到主队列当中,提交这个位图,设置给 CALayer 的content属性,这样的话就完成了一个UI控件的异步绘制过程。


异步绘制流程
上一篇下一篇

猜你喜欢

热点阅读