一、简介 (1).在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显 示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层 @property(nonatomic,readonly,retain) CALayer *layer; (2).当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了 UIView的显示。换句话说,UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。UIView的CALayer类似UIView的子View树形结构,也可以向它的 layer上添加子layer,来完成某些特殊的表示。 - (void)addSublayer:(CALayer *)layer; (3).对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以。所以,在选择的过程中,需要考虑到实际的情况 如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以当然,CALayer的性能会高一些,因为它少了 事件处理的功能,更加轻量级。 二、CALayer.h详情 见【iOS学习】CALayer.h阅读笔记 三、CALayer的子类 和UIView相似,CALayer也根据功能衍生出许多子类,系统系统给我们可以使用的有如下几种: (1).CAEmitterLayer CoreAnimation框架中的CAEmitterLayer是一个粒子发射器系统,负责粒子的创建和发射源属性。通过它,我们可以轻松创建出炫酷的粒子效果。 1.简介 CAEmitterLayer继承自CALayer,是一个粒子发射器系统,负责粒子的创建和发射源属性。通过它,我们可以轻松创建出炫酷的粒子效果。 粒子系统由两部分组成: 一个或多个CAEmitterCells:发射器电池可以看作是单个粒子的原型(例如,一个单一的粉扑在一团烟雾)。当散发出一个粒子,UIKit根据这个发射粒子和定义的基础上创建一个随机粒子。此原型包括一些属性来控制粒子的图片,颜色,方向,运动,缩放比例和生命周期。 一个或多个CAEmitterLayers,但通常只有一个:这个发射的层主要控制粒子的形状(例如,一个点,矩形或圆形)和发射的位置(例如,在矩形内,或边缘)。这个层具有全局的乘法器,可以施加到系统内的CAEmitterCells。这些给你一个简单的方法覆盖的所有粒子的变化。比如一个人为的例子将改变x雨来模拟风的速度。 基础是简单的,但这些参数却是相当微妙的。CAEmitterLayer有超过30种不同的参数进行自定义粒子的行为。 2、CAEmitterLayer.h 详情 见 【iOS学习】CAEmitterLayer.h 阅读笔记: 3、CAEmitterCell.h 详情 见 【iOS学习】CAEmitterCell.h 阅读笔记: 4、代码实例: 各种粒子效果见https://github.com/lichtschlag/Dazzle (2).CAGradientLayer CAGradientLayer可以创建出色彩渐变的图层效果。 1.简介 Gradient:本身就是梯度的意思,所以在这里就是作为渐变色来理解。 (1).CAGradientLayer用于处理渐变色的层结构 (2).CAGradientLayer的渐变色可以做隐式动画 (3).大部分情况下,CAGradientLayer时和CAShapeLayer配合使用的。 (4).CAGradientLayer可以用作PNG的遮罩效果 2.关于CAGradientLayer的坐标系统 为什么要提到CAGradientLayer的坐标系统呢?因为渐变色的作用范围,变化梯度的方向,颜色变换的作用点都和CAGradientLayer的坐标系统有关
根据上图的坐标,设定好起点和终点,渐变色的方向就会根据起点指向终点的方向来渐变了。 (1).CAGradientLayer的坐标系统是从(0,0)到(1,1)绘制的矩形 (2).CAGradientLayer的frame值的size不为正方形的话,坐标系统会被拉伸 (3).CAGradientLayer的startPoint和endPoint会直接决定颜色的绘制方向 (4).CAGradientLayer的颜色分割点时以0到1的比例来计算的 3.CAGradientLayer.h详情 见 【iOS学习】CAEmitterLayer.h 阅读笔记: (3).CAEAGLLayer CAEAGLLayer可以通过OpenGL ES来进行界面的绘制。 (4).CAReplicatorLayer CAReplicatorLayer是一个layer容器,会对其中的subLayer进行复制和属性偏移,通过它,可以创建出类似倒影的效果,也可以进行变换复制。 (5).CAScrollLayer CAScrollLayer可以支持其上管理的多个子层进行滑动,但是只能通过代码进行管理,不能进行用户点按触发。 (6).CAShapeLayer CAShapeLayer可以让我们在layer层是直接绘制出自定义的形状。 (7).CATextLayer CATextLayer可以通过字符串进行文字的绘制。 (8).CATiledLayer CATiledLayer类似瓦片视图,可以将绘制分区域进行,常用于一张大的图片的分不分绘制。 (9).CATransformLayer
CATransformLayer用于构建一些3D效果的图层。 |
|
来自: 九辰夕 > 《QuartzCore框架》