iOS-CALayer的介绍
一 、CALayer介绍
- 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮、一个文本标签、一个文本输入框、一个图标等等,这些都是UIView
- 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层
- 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层
@property (nonatomic,readonly,retain) CALayer *layer;
- 当UIView需要显示到屏幕上时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了UIView的显示
- 换句话说,UIView本身不具备显示的功能,是它内部的层才有显示功能
二、CALayer的基本使用
- 通过操作CALayer对象,可以很方便地调整UIView的一些外观属性
-
还可以给图层添加动画,来实现一些比较炫酷的效果
三、CALayer的属性
- 宽度和高度
@property CGRect bounds;
- 位置(默认指中点,具体由anchorPoint决定)
@property CGPoint position;
- 锚点(x,y的范围都是0-1),决定了position的含义
@property CGPoint anchorPoint;
- 背景颜色(CGColorRef类型)
@property CGColorRef backgroundColor;
- 形变属性
@property CATransform3D transform;
- 边框颜色(CGColorRef类型)
@property CGColorRef borderColor;
- 边框宽度
@property CGFloat borderWidth;
- 内容(比如设置为图片CGImageRef)
@property(retain) id contents;
在此介绍CALayer有2个非常重要的属性:position和anchorPoint
@property CGPoint position;
用来设置CALayer在父层中的位置,以父层的左上角为原点(0, 0)
@property CGPoint anchorPoint;
称为“定位点”、“锚点”
决定着CALayer身上的哪个点会在position属性所指的位置
以自己的左上角为原点(0, 0)
它的x、y取值范围都是0~1,默认值为(0.5, 0.5)
四、关于CALayer的疑惑
首先
- CALayer是定义在QuartzCore框架中的
- CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中的
- UIColor、UIImage是定义在UIKit框架中的
其次
- QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用
- 但是UIKit只能在iOS中使用
为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef