美文网首页iOS CALayerCALayeriOS分享世界
iOS[QuartzCore框架]CALayer篇(1)

iOS[QuartzCore框架]CALayer篇(1)

作者: 一只小蝉儿 | 来源:发表于2016-05-27 15:02 被阅读722次

    一、简介

    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的子类

    CALayer也很据功能衍生出许多子类,系统系统给我们可以使用的有如下几种:

    1、CAEmitterLayer

    QuartzCore框架中的CAEmitterLayer是一个粒子发射器系统,负责粒子的创建和发射源属性。通过它,我们可以轻松创建出炫酷的粒子效果。

    2、CAGradientLayer

    CAGradientLayer可以创建出色彩渐变的图层效果,如下:


    141858_Mnu0_2340880.png
    3、CAEAGLLayer

    CAEAGLLayer可以通过OpenGL ES来进行界面的绘制。

    4、CAReplicatorLayer

    CAReplicatorLayer是一个layer容器,会对其中的subLayer进行复制和属性偏移,通过它,可以创建出类似倒影的效果,也可以进行变换复制,如下:


    151642_Awcc_2340880.png
    5、CAScrollLayer

    CAScrollLayer可以支持其上管理的多个子层进行滑动,但是只能通过代码进行管理,不能进行用户点按触发。

    6、CAShapeLayer

    CAShapeLayer可以让我们在layer层是直接绘制出自定义的形状。

    7、CATextLayer

    CATextLayer可以通过字符串进行文字的绘制。

    8、CATiledLayer

    CATiledLayer类似瓦片视图,可以将绘制分区域进行,常用于一张大的图片的分不分绘制。

    9、CATransformLayer

    CATransformLayer用于构建一些3D效果的图层。

    最后附上一张CALayer子类的一张表,如下:


    屏幕快照 2016-06-01 上午9.33.57.png

    四、CALayer的基本使用

    1、常用的就是利用UIView的layer属性,设置圆角,边框,阴影
    代码如下:


    4C426AE4-DEAD-447C-81A9-30B22195BDE2.png

    效果如下图:


    7C9C83E1-74DC-4D5B-9912-073EAAA71000.png

    相关文章

      网友评论

        本文标题:iOS[QuartzCore框架]CALayer篇(1)

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