zoukankan      html  css  js  c++  java
  • UIView 与 CALayer

    联系:

    1.

    UIView 有个属性 layer,可以返回它的主 CALayer 实例:
    CALayer *layer = myView.layer

    2.

    一个 UIView 可以有多个 CALayer, UIView 的尺寸样式都是由内部的 CALayer 来提供的

    3.

    两者都有树状层级结构,CALayer 有 subLayers, UIView 有 subViews

    区别:

    1.最大的区别

    CALayer 不能处理用户的触摸事件,而 UIView 可以
    UIView 继承自 UIResponder,可以处理用户的触摸事件
    CALayer 直接继承 NSObject,并没有相应的处理触摸事件的接口

    2.坐标系统

    CALayer 的坐标系统比 UIView 多了一个 anchorPoint 属性
    CALayer 具有以下属性:anchorPoint, position, bounds 和 transform 等
    UIView 具有以下属性:bounds, frame 等
    UIView 是由 CoreAnimation 来实现的。它真正的绘图部分,是由一个 CALayer 类来管理
    UIView 本身更像是一个 CALayer 的管理器,访问它的 frame,bounds 等,实际上内部都是在访问它所包含的 CALayer 的相关属性

    3.

    UIView 定义在 /System/Library/Frameworks/UIKit.framework
    CALayer 定义在/System/Library/Frameworks/QuartzCore.framework
    由此也可看出,UIView 侧重于对显示内容的管理,CALayer 侧重于对内容的绘制
    UIView 和 CALayer 是相互依赖的关系,UIView 依赖 CALayer 绘制的内容,CALayer 依赖 UIView 提供的容器来显示绘制的内容
    所以 CALayer 是基础,没有 CALayer,UIView 自身不会存在,然而,UIView 是 CALayer 的特殊实现,可响应触摸事件

    4.

    对于每一个 UIView 都有一个 layer,把这个 layer 且称作RootLayer,而不是 View 的根 Layer的叫做 非 RootLayer。我们对UIView的属性修改时时不会产生默认动画,而对单独 layer属性直接修改会

    在 Core Animation 编程指南的 “How to Animate Layer-Backed Views” 中,对为什么会这样做出了一个解释:

    UIView 默认情况下禁止了 layer 动画,但是在 animation block 中又重新启用了它们

    是因为任何可动画的 layer 属性改变时,layer 都会寻找并运行合适的 'action' 来实行这个改变。在 Core Animation 的专业术语中就把这样的动画统称为动作 (action,或者 CAAction)

    layer 通过向它的 delegate 发送 actionForLayer:forKey: 消息来询问提供一个对应属性变化的 action。delegate 可以通过返回以下三者之一来进行响应:

    它可以返回一个动作对象,这种情况下 layer 将使用这个动作
    它可以返回一个 nil, 这样 layer 就会到其他地方继续寻找
    它可以返回一个 NSNull 对象,告诉 layer 这里不需要执行一个动作,搜索也会就此停止
    当 layer 在背后支持一个 view 的时候,view 就是它的 delegate

    想继续了解请移步 View-Layer 协作

    参考

    记录园子里的一篇有关CALayer与UIView的关系
    详解 CALayer 和 UIView 的区别和联系

  • 相关阅读:
    TRUNCATE TABLE 删除表中的所有行,而不记录单个行删除操作
    血腥!实况转播SQL注入全过程,让你知道危害有多大。
    DB2隔离级别设置
    使用解释工具分析SQL语句
    DB2的七种武器
    db2精华文档和论坛链接
    “饮水机”:形象比喻 深入浅出理解RAID
    DB2 数据库恢复测试
    IBM DB2 日常维护汇总
    镜像分割与高可用性灾难恢复
  • 原文地址:https://www.cnblogs.com/chenyg32/p/5185619.html
Copyright © 2011-2022 走看看