分享

【iOS学习】CALayer学习笔记(篇1)

 九辰夕 2016-03-31

 一、简介

(1).iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。其实UIView之所以能显

    示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(CALayer对象),通过UIViewlayer属性可以访问这个层

    @property(nonatomic,readonly,retain) CALayer *layer;

(2).UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了

    UIView的显示。换句话说,UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。UIViewCALayer类似UIView的子View树形结构,也可以向它的

    layer上添加子layer,来完成某些特殊的表示。

    - (void)addSublayer:(CALayer *)layer;

(3).对比CALayerUIView多了一个事件处理的功能。也就是说,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种不同的参数进行自定义粒子的行为。

    2CAEmitterLayer.h 详情

       iOS学习】CAEmitterLayer.h 阅读笔记:

    3CAEmitterCell.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的坐标系统是从(00)到(11)绘制的矩形

      (2).CAGradientLayerframe值的size不为正方形的话,坐标系统会被拉伸

      (3).CAGradientLayerstartPointendPoint会直接决定颜色的绘制方向

      (4).CAGradientLayer的颜色分割点时以01的比例来计算的

    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效果的图层。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多