这是高级考察点。

1、UIview绘制原理步骤如下:

第三章UI视图——六、UI绘制原理&异步绘制==属于CPU的优化部分

      其中view.layer调用setNeedsDisplay方法之后只是给当前layer打上了一个脏标记,然后在当前runloop将要结束时调用layer的dispaly方法,然后进入当前视图真正的绘制流程中。

2、系统绘制流程如下

第三章UI视图——六、UI绘制原理&异步绘制==属于CPU的优化部分

      在layer内部会创建一个backing store,即CGContextRef(在drawrect方法中可以通过堆栈获取该对象);drawrect函数默认是不做任何事情的,重写之后就可以在系统绘制之上做一些自定义工作。

3、异步绘制

      如何实现异步绘制呢?首先layer.delegate实现displayLayer方法;然后layer.delegate在displayLayer方法中生成bitmap;最后设置bitmap作为layer.contents属性的值。

      异步绘制的时序图流程如下:

第三章UI视图——六、UI绘制原理&异步绘制==属于CPU的优化部分

相关文章:

  • 2022-01-07
  • 2021-10-11
  • 2021-09-20
  • 2021-07-24
  • 2022-12-23
  • 2021-12-17
  • 2022-01-15
  • 2021-12-04
猜你喜欢
  • 2021-11-25
  • 2021-12-13
  • 2021-08-13
  • 2021-05-08
  • 2021-10-20
  • 2022-12-23
  • 2021-07-21
相关资源
相似解决方案