美文网首页
UIView与CALayer的关系

UIView与CALayer的关系

作者: 王蓝胖 | 来源:发表于2016-02-25 15:34 被阅读130次
  • 关系
    UIView表示屏幕上的一块矩形区域,IOS中几乎所有可视化控件都是UIView的子类。负责渲染区域的内容,并且响应该区域内发生的触摸事件


    因为UIView继承于UIResponder,所以UIView是可交互的

而它的绘图部分是由CALayer完成的,UIView包含一个layer属性,所有通过UIView访问的绘图属性,比如frame,本质上都是对其layer属性的访问。

  • 锚点
    CALayer比UIView的坐标系统多了一个anchorPoint属性,即锚点。顾名思义,比如说Layer是一艘船,那么当这艘船下锚之后,不论这艘船怎么转,都要绕着这个锚点。锚点是CGPoint结构,取值范围在0-1之间,默认(0.5,0.5),即layer的中心点,所以锚点是个比例值。iOS中的翻页,转动都是基于锚点来实现的。

  • CGImageRef,CGColorRef/UIImage,UIColor

  • CALayer是定义在QuartzCore框架中的;CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中的;UIColor、UIImage是定义在UIKit框架中的

  • 其次,QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用,但是UIKit只能在iOS中使用

  • 因此,为了保证可移植性, QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

  • 不过很多情况下,可以通过UIKit对象的特定方法,得到CoreGraphics对象,比如UIImage的CGImage方法可以返回一个CGImageRef

  • UIView的显示过程

  • 当UIView需要显示时,它内部的层会准备好一个CGContextRef(图形上下文),然后调用delegate(这里就是UIView)的drawLayer:inContext:方法,并且传入已经准备好的CGContextRef对象。而UIView在drawLayer:inContext:方法中又会调用自己的drawRect:方法

  • 平时在drawRect:中通过UIGraphicsGetCurrentContext()获取的就是由层传入的CGContextRef对象,在drawRect:中完成的所有绘图都会填入层的CGContextRef中,然后被拷贝至屏幕

相关文章

  • 简述CALayer和UIView的关系

    简述CALayer和UIView的关系 答:UIView和CALayer是相互依赖的关系。UIView依赖与cal...

  • 动画

    动画 Animation 1.CALayer简介 1.1 CALayer与UIView之间的关系 UIView 能...

  • iOS-CALayer详解与应用

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

  • UI事件传递&响应

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

  • UI事件传递与响应

    先了解下UIView与CALayer的关系 UIView为CALayer提供内容,负责处理触摸事件,参与响应链 ,...

  • UIView&CALayer

    一、UIView与CALayer的关系 UIView属性持有layer,layer的代理是UIView 二、dra...

  • CALayer和UIView详解

    关于UI的继承关系图: CALayer & UIView 区别 概念 CALayer和UIView的关系 可以说:...

  • 2018-07-30 面试题总结

    1.UIView 与CALayer的关系 每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并...

  • CALayer与UIView的区别

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

  • UIView和CALayer

    UIView和CALayer和有什么关系 UIview中有个属性layer,是CALayer类型。 CALayer...

网友评论

      本文标题:UIView与CALayer的关系

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