CALayer(非官方翻译)

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这些常量指定被magnificationFilterminificationFilter使用的缩放过滤器

CATransform3D定义在核心动画使用的标准转换矩阵


Initializers 初始化器

+ layerWithRemoteClientId:


Instance Properties 实例属性

contentsFormat

推荐阅读更多精彩内容

  • 版本记录 前言 大家都知道UIView之所以可以显示内容,主要是靠其底层的CALayer。CALayer包含在Qu...
    刀客传奇阅读 717评论 2 2
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥ios动画全貌。在这里你可以看...
    每天刷两次牙阅读 4,018评论 4 21
  • 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥iOS动画全貌。在这里你可以看...
    F麦子阅读 2,807评论 2 11
  • 图层树 在UIKit中所有的视图都是基于UIView派生而来,UIView支持触摸时间,可以支持基于CoreGra...
    maguns阅读 471评论 1 2
  • 转载:http://www.jianshu.com/p/32fcadd12108 每个UIView有一个伙伴称为l...
    F麦子阅读 1,689评论 0 12