美文网首页iOS 开发交流
UIView 与 CALayer的区别

UIView 与 CALayer的区别

作者: Mr__Peng__ | 来源:发表于2019-03-19 13:34 被阅读0次

1.UIView是iOS界面元素的基础,所有的界面元素都继承它。本身完全是由CoreAnimation来实现的。真正的绘图部分,是由CALayerCore Animation Layer)的类管理(包含在QuartzCore中)。UIView本身,更像是一个CALayer管理器,访问它的跟绘图和坐标有关的属性,例如framebounds等等, 内部是在访问包含的CALayer的相关属性。在iOS中CALayer的设计主要是了为了内容展示和动画操作,CALayer本身并不包含在UIKit中,它不能响应事件。所以在使用过程中,需要通过手势来控制CAlayer的属性变化(transform啦等等)时需要用一个view来接收手势(touch事件或者GuestureRecognizer),并在事件响应方法中实现CAlayer的变化

  1. UIView有layer属性,可以返回它的CALayer实例,layerClass方法,返回主layer使用的类,UIView的子类,可以通过重载这个方法,来让UIView使用不同的CALayer来显示,例如通过
- (class) layerClass {
  return ([CAEAGLLayer class]);
}

使某个UIView的子类使用GL来进行绘制。

  1. UIView的CALayer类似UIView的子View树形结构,也可以向它的layer上添加子layer
  2. UIView的layer树形在系统内部,被系统维护着三份copy
  • 逻辑树,就是代码里可以操纵的,例如更改layer的属性等等就在这一份。
  • 动画树,这是一个中间层,系统正在这一层上更改属性,进行各种渲染操作。
  • 显示树,这棵树的内容是当前正被显示在屏幕上的内容。
    这三棵树的逻辑结构都是一样的,区别只有各自的属性。
  1. 动画的运作
    UIView 的主layer以外,对它的subLayer,也就是子layer的属性进行更改,系统将自动进行动画生成,动画持续时间有个缺省时间, 大概是0.5秒。在动画时间里,系统自动判定哪些属性更改了,自动对更改的属性进行动画插值,生成中间帧然后连续显示产生动画效果。
  2. 坐标系系统
    CALayer 的坐标系系统和UIView有点不一样,它多了一个叫anchorPoint属性,它使用CGPoint结构,但是值域是0~1,也就是按照比例来设 置。这个点是各种图形变换的坐标原点,同时会更改layer的position的位置,它的缺省值是{0.5, 0.5},也就是在layer的中央。
    layer.anchorPoint = CGPointMake(0.f, 0.f);
    如果这么设置,layer的左上角就会被挪到原来的中间的位置,
    加上这样一句就好了
    layer.position = CGPointMake(0.f, 0.f)

相关文章

  • CALayer与UIView的区别

    CALayer与UIView的区别 基础 CALayer的定义 CALayer的基础 CALayer和UIView...

  • UIView和CALayer

    问题:UIView和CALayer的区别与联系是什么?UIWindow和UIView和CALayer 的联系和区别...

  • 问题汇总

    1、UIView和CALayer区别UIView和CALayer的区别.UIView相对于CAlayer来说就多了...

  • UIView与CALayer || frame与boun

    1、UIView 与 CALayer 区别 UIView可以传递事件而CALayer无法参与事件传递,这个...

  • 图层和视图的区别

    图层就是CALayer 视图是UIView CALayer与UIView基本一一对应,但是区别在与UIView有事...

  • iOS-CALayer详解与应用

    view与layer的关系 CALayer属性表如下 CALayer和UIView的区别 UIView是UIKit...

  • ios面试总结

    UIView与CALayer的区别? UIView继承于UIResponder->NSObjectCALayer继...

  • UI事件传递&响应

    UIView与CALayer的关系与区别 UIView为CALayer提供内容,以及负责触摸等事件,参与响应链CA...

  • iOS界面渲染流程

    前言:关系图 一、UIView 和 CALayer 的区别 ([详解CALayer 和 UIView的区别和联系]...

  • iOS面试题(6-10)

    6.UIView与CALayer有什么区别 UIView管理绘制与事件处理(尤其是触摸事件).CALayer完全关...

网友评论

    本文标题:UIView 与 CALayer的区别

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