美文网首页
UIView绘制原理

UIView绘制原理

作者: wells_f9d4 | 来源:发表于2018-11-16 11:24 被阅读0次

self.layer.delegate = self ;这个方法不用写,系统默认会设置delegate为当前view

当调用setNeedsDisplay时候,流程如下
    [self setNeedsDisplay];

    [self.layer setNeedsDisplay];

//.线程上是异步执行,不会阻塞线程,并且在runloop最后一个阶段执行

    [self.layer display];//首先回判断代理是否响应这个displayLayer:方法

    如果响应就进入异步绘制入口(- (void)displayLayer:(CALayer*)layer)  ,

代理负责生成对应的bitmap

设置改bitmap座位layer.contents属性的值

不响应就进入系统绘制流程

系统绘制流程

CALayer creates backingstore

layer 是否有代理layer.delegate方法drawLayer:inContext

没有代理调用系统 CALayer drawInContext:

有代理调用代理方法- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx,如果在里面调用父类方法[super drawLayer:layer inContext:ctx];,就会调用- (void)drawRect:(CGRect)rect。没有调用super drawlayer的话就不会调用drawRect。(需要说明的是如果没有实现 drawRect方法,那么drawLayer:inContext:方法也不会调用)

相关文章

网友评论

      本文标题:UIView绘制原理

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