Class CALayer
CALayer类管理基于图像的内容,并允许你对该内容执行动画。图层通常用于提供视图的后备存储,但也可以在不显示内容的情况下使用。 图层的主要工作是管理你提供的可视内容,但图层本身具有可设置的可视属性,例如背景色,边框和阴影。 除了管理可视内容之外,该层还维护关于其内容的几何形状(例如其位置,大小和变换)的信息,该信息用于在屏幕上呈现该内容。 修改图层的属性是如何在图层的内容或几何图形上启动动画。 层对象通过采用CAMediaTiming协议来封装层及其动画的持续时间和起搏,CAMediaTiming协议定义了层的定时信息
Symbols
Creating a Layer 创建图层
+ layer
创建并返回图层对象实例
Discussion: 如果你继承了CALayer,你可以重写这个方法,并且使用它来提供一个你指定子类的实例
- init
返回一个初始化的CALayer对象
Discussion: 这是不在表示层中的图层对象的初始化器
initWithLayer:
覆盖来拷贝或初始化指定图层的自定义字段
Accessing Related Layer Objects 访问相关层对象
- presentationLayer
返回一个呈现图层的副本,该对象表示当前显示在屏幕上的图层的状态
- modelLayer
返回与接收器关联的模型图层对象(如果有)
Accessing the Delegate 访问代理
delegate
图层的代理对象
Providing the Layer's Content 提供图层内容
contents
提供图层内容的对象,动画.
Discussion: 这个属性的默认值为nil,如果你使用这个图层来显示一张静态图像,你可以把包含你想要显示的图像的CGImageRef设置给这个属性。为此属性赋值将导致图层使用你的图像,而不是创建单独的后备存储。如果图层对象绑定到视图对象,你应该避免直接设置此属性的内容。视图和图层之间的交互通常导致视图在后续更新期间代替此属性的内容。
eg: layer.contents = (__bridge id)image.CGImage;
contentsRect
在单位坐标空间,定义应该被使用的图层内容部分的矩形。动画。允许我们在图层边框里显示寄宿图的一个子域。可以用于图片拼合
Discussion: 默认为单位矩形(0.0, 0.0, 1.0, 1.0)。如果请求单位矩形外的像素,则内容视图的边缘像素将向外扩展。如果提供的是一个空矩形,则结果是未定义的。
contentsCenter
定义如果图层内容调整大小时如何缩放图层内容的矩形。动画。默认为单位矩形(0.0, 0.0, 1.0, 1.0)
- display
重新加载此图层的内容
- drawInContext:
使用指定的绘图上下文绘制图层的内容
Modifying the Layer's Appearance 修改图层外观
contentsGravity
一个常量,指定图层内容如何在其范围内定位或缩放 <->UIView: contentMode
eg: layer.contentsGravity = kCAGravityResizeAspect;
opacity
接收器的不透明度。动画
hidden
一个布尔值指示图层是否显示。动画
masksToBounds
一个布尔值指示子图层是否剪切到图层的边界。动画☑️ <->UIView: clipsToBounds
mask
一个可选图层,其alpha通道用于屏蔽图层内容
doubleSided
一个布尔值指示图层当背离视图时是否显示它的内容。动画
cornerRadius
绘制图层的背景圆角时使用的半径。动画
borderWidth
图层边框的宽度。动画
borderColor
图层边框的颜色。动画
backgroundColor
接收器的背景色。动画
shadowOpacity
图层阴影的不透明度。动画
shadowRadius
用于渲染图层阴影的模糊半径(以点为单位)。动画
shadowOffset
图层阴影的偏移量(以点为单位)。动画
shadowColor
图层阴影的颜色。动画
shadowPath
图层阴影的形状。动画
style
一个用于存储未由图层显示定义的属性值的可选字典
allowsEdgeAntialiasing
一个布尔值指示是否允许图层执行边缘抗锯齿
allowsGroupOpacity
一个布尔值指示是否允许图层将自身复合为与其父级分离的组
Accessing the Layer's Filters 访问图层的过滤器
filters
应用于图层和其子图层内容的Core Image
过滤器数组。动画
compositingFilter
一个CoreImage
过滤器用于合成图层及其后面的内容。动画
backgroundFilters
应用于图层后面的内容的CoreImage
过滤器数组。动画
minificationFilter
当减少内容的大小时使用的过滤器
minificationFilterBias
缩微过滤器用于确定细节水平的偏差因子
magnificationFilter
当增加内容的大小时使用的过滤器
Configuring the Layer's Rendering Behavior 配置图层的呈现行为
opaque
一个布尔值指示图层是否包含完全不透明内容。
edgeAntialiasingMask
位掩码定义如何光栅化接收器的边缘
- contentsAreFlipped
返回一个布尔值,指示屠城内容在呈现时是否隐式翻转
geometryFlipped
一个布尔值指示图层和其子图层的几何是否垂直翻转
drawsAsynchronously
一个布尔值指示绘图命令是否在后台线程中异步延迟和处理
shouldRasterize
一个布尔值指示图层在合成之前是否作为位图呈现。动画
rasterizationScale
相对于图层的坐标空间光栅化内容的比例
- renderInContext:
将接收器和其子图层渲染到指定的上下文中
Modifying the Layer Geometry 修改图层几何结构
frame
图层的框架矩形
bounds
图层的边界矩形。动画
position
在它的父图层坐标空间中图层的位置。动画
zPosition
在z坐标轴上图层的位置。动画
anchorPointZ
图层沿z轴的位置的锚点。动画
anchorPoint
定义一个图层的边界矩形的锚点。动画
contentsScale
应用于图层的比例因子。 定义了寄宿图的像素尺寸和视图大小的比例,默认情况下它是一个值为1.0的浮点数。属于支持高分辨率屏幕机制的一部分。用来判断在绘制图层的时候应该为寄宿图创建的空间大小,和需要显示的图片的拉伸度。 <->UIView: contentScaleFactor
tip: 用代码的方式来处理寄宿图的时候,需要手动的设置图层的contentsScale属性,否则,图片在Retina设备上会显示不正确。
eg: layer.contentsScale = [UIScreen mainScreen].scale;
Managing the Layer's Transform 管理图层的变换
transform
应用于图层内容的变换。动画
sublayerTransform
指定在呈现时应用于子图层的变换。动画
- affineTransform
返回图层变换的仿射版本
- setAffineTransform:
将图层的变换设置为指定的仿射变换
Managing the Layer Hierarchy 管理图层层级
sublayers
一个数组包含图层的子图层
superlayer
图层的父图层
- addSublayer:
将图层添加到子图层列表中
- removeFromSuperlayer
从父层拆离图层
- insertSublayer:atIndex:
将指定的层插入指定索引处的接收方子层列表中。
- insertSublayer:below:
将指定的子层插入到已经属于接收器的不同子层下面。
- insertSublayer:above:
将指定的子层插入到已属于接收器的不同子层上。
- replaceSublayer:with:
用不同的图层对象替换指定的子图层。
Updating Layer Display 更新图层显示
- setNeedsDisplay
将图层的内容标记为需要更新
- setNeedsDisplayInRect:
将指定矩形内的区域标记为需要更新
needsDisplayOnBoundsChange
一个布尔值指示当它的边界矩形改变时是否必须更新图层内容
- displayIfNeeded
如果图层当前被标记为需要更新,则启动图层的更新过程
- needsDisplay
返回一个布尔值指示图层是否以标记为需要更新
+ needsDisplayForKey:
返回一个布尔值指示对指定键的更改是否要求重新显示该图层
Layer Animations 图层动画
- addAnimation:forKey:
给图层渲染树添加指定动画对象
- animationForKey:
使用指定的标识符来返回一个动画对象
- removeAllAnimations
移除依附在图层上的所有动画
- removeAnimationForKey:
使用指定的键来移除动画对象
- animationKeys
返回一个字符串数组,用来标记当前附加在图层的动画
Managing Layer Resizing and Layout 管理图层调整和布局
layoutManager
负责布置图层的子图层对象
- setNeedsLayout
使图层的布局无效,并将其标记为需要更新
- layoutSublayers
告诉图层更新其布局
- layoutIfNeeded
如果需要,重新计算接收器的布局
- needsLayout
返回一个布尔值,指示图层是否已标记为需要布局更新
autoresizingMask
一个位掩码定义当它的父图层的边界改变时如何调整图层的大小
- resizeWithOldSuperlayerSize:
通知接收器其父图层的大小改变了
- resizeSublayersWithOldSize:
通知接收器的子图层接收器的大小已经改变了
- preferredFrameSize
返回图层在其父图层的坐标空间中的首选大小
Managing Layer Constraints 管理图层约束
constraints
用于定位当前图层的子图层的约束
- addConstraint:
给图层添加指定约束
Getting the Layer's Actions 获取图层的行为
- actionForKey:
返回分配给指定键的动作对象
actions
包含图层动作的字典
+ defaultActionForKey:
为当前类返回一个默认的动作
Mapping Between Coordinate and Time Spaces 坐标和时空之间的映射
- convertPoint:fromLayer:
将点从指定的图层坐标系转换为接收器坐标系
- convertPoint:toLayer:
将点从接收器的坐标系转换为指定图层的坐标系
- convertRect:fromLayer:
将矩形从指定的图层坐标系转换为接收器的坐标系
- convertRect:toLayer:
将矩形从接收器的坐标系转换为指定图层的坐标系
- convertTime:fromLayer:
将时间间隔从指定图层的时间空间转换为接收器的时间空间
- convertTime:toLayer:
将时间间隔从接收器的时间空间转换为指定图层的时间空间
Hit Testing 点击测试
- hitTest:
返回包含指定点的图层层次结构(包含它自己)中接收器最远子图层
- containsPoint:
返回接收器是否包含指定点
Scrolling 滚动
visibleRect
图层在它自己的坐标空间中的可见区域
- scrollPoint:
在图层最近的祖先滚动图层中启动滚动,以使指定点位于滚动图层的原点
- scrollRectToVisible
在图层最近的祖先滚动图层中启动滚动,以使指定的矩形变为可见
Identifying the Layer 图层的标识
name
接收器的名字
Key-Value Coding Extensions 键值编码扩展
- shouldArchiveValueForKey:
返回一个布尔值指示是否应存档指定键的值
+ defaultValueForKey:
指定一个默认值关联一个指定的键
Constants 常量
CAAutoresizingMask
这些常量由autoresizingMask
属性使用
Action Ifentifiers
这些常量是预定义动作标识符,通过actionForKey:,addAnimation:forKey,defaultActionForKey:,removeAnimationForKey:
,访问图层的过滤器以及CAAction
的协议方法runActionForKey:object:arguments:
使用
CAEdgeAntialiasingMask
这个标记由edgeAntialiasingMask
属性使用
Contents Gravity Values
当图层的边界大于内容对象的边界时,内容重力常量指定内容对象的位置。被contentsGravity
属性使用
Identity Transform
定义核心动画使用的原始转换矩阵
Scaling Filters
这些常量指定被magnificationFilter
和minificationFilter
使用的缩放过滤器
CATransform3D
定义在核心动画使用的标准转换矩阵
Initializers 初始化器
+ layerWithRemoteClientId:
Instance Properties 实例属性
contentsFormat