渲染过程期间,Core Animation 采用图层的不一样属性,并以特定顺序渲染它们。该顺序决定图层最终的展现样式。本章说明了经过设置不一样的图层样式属性得到的渲染结果。动画
注意:图层的样式属性在 Mac OS X 和 iOS 上是不一样的,本章都有说明。
3d
图层的几何属性指定了它如何在它的父图层上显示。几何属性也指定了图层的圆角半径,应用在图层及子图层上的形变。图 A-1 展现了示例图层的边界形状。code
下面的 CALayer 属性制定了图层的几何图形:orm
iOS 注意:cornerRadius 属性仅在 iOS 3.0 及之后版本可用。
cdn
Core Animation 渲染的第一件事就是图层的背景。你能够给背景指定颜色。在 OS X 上,你也能够给背景内容指定你想应用的 Core Image 过滤器。图 A-2 展现了一个图层的两个版本。左边图层设置了 backgroundColor
属性;右边图层没有设置 backgroundColor 属性,但它有内容和边框,和赋值给 backgroundFilters
属性的收缩失真滤波器。对象
背景过滤器应用于图层后面的内容,该内容主要由父图层的内容组成。你可使用背景滤镜来突出前景层内容;例如,经过应用模糊过滤器。blog
下面的 CALayer 属性影响图层的背景展现:递归
平台说明:在 iOS 上,CALayer 类有 backgroundFilters 属性的接口,但你给该属性赋的值会被忽略。
接口
若是图层有任何内容,该内容将在背景色上面渲染。你能够经过如下方式提供图层内容:ci
你可使用不少不一样的绘制技术(包括 Quartz, Metal, OpenGL, 和 Quartz Composer)来提供内容。图 A-3 展现了经过直接设置位图来展现内容的图层。位图内容由一个大部分透明的空间组成,自动机图标位于右下角。
下面 CALayer
的属性影响图层内容的显示:
任何图层可能包含一个或者多个孩子图层(child layer),称为子图层(sublayers)。子图层递归渲染,并相对于父图层的边界矩形定位。另外, Core Animation 会将父图层的 sublayerTransform
应用到每个和父图层锚点相关的子图层。你可使用子图层变换将透视和其余效果均等地应用到全部图层。图 A-4 展现了有两个子图层的示例图层。左边的版本包含背景色,右边的则不包含。
masksToBounds
属性设置为 YES ,会形成超出图层边界的全部子图层内容被裁减。
CALayer 下面的属性影响图层的子图层内容显示:
图层使用指定的颜色和宽度显示一个可选边界线。边框遵循图层的边界矩形,而且会考虑任何圆角半径。图 A-5 展现了显示边界线的示例图层。注意图层边界线之外的内容和子图层,被渲染在边界线的下面。
CALayer 下面的属性影响图层的边界线显示:
平台说明: borderColor 和 borderWidth 属性仅在 iOS 3.0 及之后版本可用。
在 OS X,你能够给图层内容应用一个或多个过滤器,也可使用自定义的合成过滤器去指定图层内容如何和它底部图层的内容混合。图 A-6 展现了应用 Core Image 后置过滤器的示例图层。
CALayer 下面的属性指定图层内容过滤器:
平台说明: 在 iOS, 图层会忽略你赋值的任意过滤器。
图层可显示阴影效果,而且能够配置它们的形状、不透明度、颜色、偏移量和模糊半径。若是你没有指定自定义阴影形状,那阴影会基于图层中不彻底透明的部分绘制。图 A-7 展现了同一应用红色阴影的示例图层的几个不一样版本。左边和中间的图层有背景色,因此阴影只出如今边界线附近。而右边的图层没有背景色,在这种状况下,阴影会应用到图层的内容,边界线和子图层上。
CALayer 下面的属性影响图层阴影的显示:
平台说明: shadowColor, shadowOffset, shadowOpacity, 和 shadowRadius 属性仅在 iOS 3.0 及之后版本可用。 shadowPath 属性支持 iOS 3.2 及之后版本;OS X v10.7 及之后版本。
图层的不透明度属性决定了经过图层显示多少背景内容。图 A-8 展现了不透明度设置为 0.5 的示例图层。这容许背景图像的一部分显示出来。
CALayer 下面的属性指定图层的不透明度:
你可使用遮罩来隐藏图层的所有或部份内容。遮罩自己就是一个图层对象,其 alpha 通道用于肯定哪些被阻止,哪些被传输。遮罩层内容的不透明部分容许下面的图层内容透过,而透明部分部分或彻底遮蔽下面的内容。图 A-9 展现了一个示例图层,它由一个遮罩层和两个不一样的背景组成。在左侧版本中,图层的不透明度设置为1.0。在右边的版本中,图层的不透明度被设置为0.5,这增长了经过图层的遮罩部分传输的背景内容的数量。
CALayer 下面的属性指定图层的遮罩:
平台说明: mask 属性仅在 iOS 3.0 及之后版本可用。