永发信息网

iOS中CALayer的subLayer是什么样的数据结构,重绘顺序是怎么样的

答案:2  悬赏:80  手机版
解决时间 2021-11-26 11:31
  • 提问者网友:黑米和小志
  • 2021-11-25 16:23
iOS中CALayer的subLayer是什么样的数据结构,重绘顺序是怎么样的
最佳答案
  • 五星知识达人网友:迟山
  • 2021-11-25 17:57
数据结构跟UIView的subView一样,都是一个树形的结构
重绘机制:当调用setNeedsDisplay的时候会重新调用render方法,而CALayer实际是维护个三个模型的树形结构,一个是渲染树,一个是呈现树,还有一个是当前模型树:

Layer的渲染架构[重要]
Layer也和View一样存在着一个层级树状结构,称之为图层树(Layer Tree),有以下三种:
(1)模型树(Model Tree)直接创建的或者通过UIView获得的(view.layer)用于显示的图层树,称之为模型树(Model Tree);
模型树的背后还存在两份图层树的拷贝,一个是呈现树(Presentation Tree),一个是渲染树(Render Tree).
(2)呈现树(Presentation Tree),呈现树可以通过普通layer(其实就是模型树)的layer.presentationLayer获得
模型树则可以通过modelLayer属性获得.模型树的属性在其被修改的时候就变成了新的值,这个是可以用代码直接操控的部分;呈现树的属性值和动画运行过程中界面上看到的是一致的.
(3)渲染树(Render Tree),渲染树是私有的,你无法访问到,渲染树是对呈现树的数据进行渲染,为了不阻塞主线程,渲染的过程是在单独的进程或线程中进行的,所以你会发现Animation的动画并不会阻塞主线程.
全部回答
  • 1楼网友:持酒劝斜阳
  • 2021-11-25 18:42
如何在ios中运用core animation暂停和继续动画 核心代码如下 //暂停layer上面的动画 - (void)pauseLayer:(CALayer*)layer { CFTimeInterval pausedTime = [layer convertTime:CACurrentMediaTime() fromLayer:nil]; layer.speed = 0.0; layer.ti
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯