CALayer常用子类

2018-09-11  本文已影响8人  弹吉他的少年

相关 Demo下载地址

CALayer是Core Animation的基础,UIKit 相关内容实现的基础
简单来说,View和Layer最大的区别就是View可以接受用户输入(例如触摸)而Layer不可以,Layer单独并不能呈现出任何可视的内容,必须依托于View。Layer只是几何上呈现给用户的东西,它较为轻量,通常采用Cache技术,对资源消耗也较小。

一、简单介绍

在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView。
其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层

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

当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示
换句话说,UIView本身不具备显示的功能,拥有显示功能的是它内部的图层。

二、简单使用

UIView之所以能够显示,完全是因为内部的CALayer对象。因此,通过操作这个CALayer对象,可以很方便地调整UIView的一些界面属性,比如:阴影、圆角大小、边框宽度和颜色等。

1. CATiledLayer - 用来管理一副可以被分割的大图

  • 有些时候你可能需要绘制一个很大的图片,iOS应用通畅运行在内存受限的设备上,所以读取整个图片到内存中是不明智的。
  • 在主线程调用UIImage的imageNamedimageWithContentsOfFile方法,将会阻塞你的用户界面,至少会引起动画卡顿现象。
功能简介
相关属性

产生模糊的根源是图层的细节层次(level of detail,简称LOD),CATiledLayer有两个相关属性:

2. CAShapeLayer - 绘制立体的贝塞尔曲线

demo下载地址:
CAShapeLayer - 绘制机器猫

上一篇 下一篇

猜你喜欢

热点阅读