认识UIView和CALayer的关系

作为一名IOS开发者,不仅要学会使用系统为我们封装好的控件,还要了解其基本原理。我们通常使用的UIViewCALayer有什么关系呢?很多人明白UI View可以进行触摸等事件捕捉,而CALayer主要用于绘图和显示,是UIView的一个基本属性。为了让大家更多的了解它们之间的关系,做到精益求精,这里汇总了UIView和CALayer的所有区别点,供参考:

  • UIView属于UIKIt中的封装控件,只能在iOS使用, CALayer是QuartzCore的 iOS和mac os通用
  • CALayer比UIView轻量级,并且可以实现同样的显示效果和动画效果。
  • CALayer层级关系依然类似UIView的子View树形结构
  • UIView比CALayer多了一个事件处理功能,也就是说UIView能处理用户触摸
  • UIView有个重要的属性layer,可以返回它的主CALayer实例.CALayer *layer = customView.layer
  • 坐标系统: CALayer的坐标系统比UIView多了一个anchorPoint(锚点)属性,主要用于动画控制。
  • UIView是iOS系统中界面的基本元素,所有的界面元素都是继承自它.它本身完全是由CoreAnimation来实现的.它真正的绘图部分,是由一个CALayer类来管理的.UIView本身更像是一个CALayer的管理者,访问它的跟绘图和跟坐标有关的属性,如frame,bounds等,实际上内部都是在访问它所包含的CALayer的相关属性.
    layer可以设置圆角显示 cornerRadius, 也可以设置阴影 shadowColor ,但是如果layer中某个layer设置了圆角,所有layer的阴影效果将都不显示.因此要设置有圆角还要阴影,可以做两个UIView重叠,一个layer显示圆角一个layer显示阴影
  • 渲染,当更新层 改变不能立即显示在屏幕上.当所有的层都准备好时,可以调用setNeedsDisplay方法来重绘显示.
  • 变换:要在一个层中添加一个3D或仿射变换,可以分别设置层的transform或者affineTransform属性
  • 变形Quartz Core的渲染能力, 使二维图像可以被自由的操纵,就像是三维的.图像可以在一个三维坐标系中以任意的角度被旋转 缩放 和倾斜.CATransform3D的一套方法提供了一些魔术般的效果

好了,UIView和CALayer的区别联系就介绍到这里,知道以上的关系就足够了~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:1   其中:访客  0   博主  1

  1. avatar xiewenyin

    调用Block的copy实例方法时
    Block作为函数返回值返回时
    将Block赋值给附有__strong修饰符id类型的类或者Block类型成员变量时
    在方法名中含有usingBlock的Cocoa框架方法或Grand Central Dispatch 的API中传递Block时