美文网首页
UIView的异步绘制原理

UIView的异步绘制原理

作者: 磊简单 | 来源:发表于2018-09-12 21:49 被阅读0次

UIKit和Pixels

每一个UIKit中的view都有他自己的CALayer。
每一个图层都有一个叫像素位图的后备存储,有点像一个图像。这个后备存储正是被渲染到显示器上的。

  • drawRect:
    当你的视图实现了drawRect:他们这样工作:
    当你调用 setNeedDisplay,UIKit将会在这个视图上的CALayer上调用setNeedDisplay。这为图层设置了一个标识,标记为dirty(脏标记),但还是显示原来的内容,没做任何工作,所以调用多次setNeedDisplay是不会有性能损失的。
    下面当渲染系统准备好时(也就是当然的runloop即将结束时),它将会调用视图图层的display方法。此时,图层会装配它的后备存储(像素位图)。
    然后建立一个Core Graphics上下文(CGContextRef),将后备存储对应内存中的数据恢复出来,绘图会进入对应的内存区域,并使用CGContextRef绘制。

UIView调用setNeedDispaly方法后,实际上并没有发生当前视图的绘制工作,而是在之后的某一时刻进行绘制工作。

  • 为什么会在之后的某一时机进行绘制工作呢?
    UIView 调用setNeedDisplay之后,系统会调用view对应的layer的setNeedDisplay方法,相当于在当前的layer上打上了一个脏标记,然后在当前runloop结束的时候调用CALayer的display方法,才会真正进入当前视图的绘制流程中,所以试图的绘制时机,当前runloop即将结束时开始

  • CALayer的display的内部实现:
    首先会判断layer的delegate是否响应display方法,如果不响应就会进入到系统的绘制流程当中。如果响应,实际上就为我们呢提供了异步绘制的接口,这样就构成了UIView的绘制原理。

相关文章

  • 常见面试问题概括

    UI视图相关 *TableView重用机制? 答: *视图绘制原理?如何实现异步绘制? 答:UIView绘制原理 ...

  • UIView绘制原理,异步绘制

    UIView绘制原理 首先看一幅流程图 CALayer的display方法的内部实现,首先会判断layer的del...

  • UIView绘制原理&异步绘制

    绘制原理 异步绘制流程

  • UIView的绘制原理、异步绘制

    一.UIView的绘制原理 如上图: 调用[UIView setNeedsDisplay]后, 会调用系统的同名方...

  • iOS UIView 异步绘制

    一、异步绘制原理 在 UIView 中有一个 CALayer 的属性,负责 UIView 具体内容的显示。具体过程...

  • UIView的异步绘制原理

    UIKit和Pixels 每一个UIKit中的view都有他自己的CALayer。每一个图层都有一个叫像素位图的后...

  • iOS-UIView异步绘制

    1.异步绘制原理 在 UIView 中有一个 CALayer 的属性,负责 UIView 具体内容的显示。具体过程...

  • 视图绘制

    本文要点 事件传递视图响应图像显示原理卡顿掉帧原因绘制&异步绘制离屏渲染 先看一下UIView和CALayer区别...

  • UIView的绘制原理

    UIView流程: UIView的 系统的绘制流程 异步绘制 需要代理负责生成对应的bitmap设置该bitmap...

  • UI绘制原理和异步绘制

    UIView的绘制原理 说道UIView的绘制原理,我们先来看一张图: 从上面的图,我们可以看到: 1.先调用[...

网友评论

      本文标题:UIView的异步绘制原理

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