在渲染过程当中,核心动画获取Layer的各类属性并以特定的顺序渲染他们。这个顺序决定了Layer的最终的样貌。本节将会阐述经过设置不一样的Layer样貌相关属性对应产生的渲染结果。app
注意:Mac OSX与iOS平台中,Layer样貌相关属性是不一样的,经过本节将会知道他们的区别。(鄙人暂不翻译Mac OSX的内容,除非牵涉到iOS。)性能
一个Layer的几何属性指定了它相对于它的父视图如何展现(摆放)。集合属性指定了用因而Layer边角变圆的圆角属性,并制定了应用于Layer自己和他的sublayers的transform属性。图A-1展现了示例Layer的bounds矩形。动画
下面的CALayer属性指定一个Layer的相关几何形状。翻译
核心动画首先渲染的就是Layer的background(背景)。咱们能够为背景指定一个颜色。在OSX中,咱们也能指定一个咱们想要应用到背景content的Core Image filter,图A-2展现了这两种样式的Layer。左边的是设置了backgroundColor属性;右边的没有设置backgroundColor属性,可是设置了border(边框)和backgroundFilters属性。
代理
Background filter是被应用到Layer后面的content,这content主要是有父Layer的content组成。咱们通常使用background filter让处在前面的Layer的content更突出;例如经过应用毛玻璃filter。
如下CALayer属性影响Layer的背景的显示:orm
平台提醒:在iOS中,CALayer虽然讲backgroundFilters属性暴露出来了,可是咱们讲filters关联到该属性是无效的。继承
若是Layer有content,content就会渲染在background color的上层。咱们能够经过3中方式为Layer设置content——直接设置bitmap、使用代理或者继承Layer并绘制content,而且咱们可使用多种绘制技术(Quartz,Metal,OpenGL,Quartz 合成器)提供content。图A-3展现了示例Layer,该Layer的content是被直接设置为bitmap,这个bitmap由大量的透明部分和右下角的icon。
递归
设置圆角的Layer不会自动裁剪他们的contents;可是,将Layer的masksToBounds属性设置为YES,就会引发Layer裁剪圆角。
下面的CALayer属性影响Layer的content的显示:图片
每一个Layer均可能包含一个或者多个子Layers,这些子Layers被称为sublayers。相对于父Layerde bounds矩形,sublayers是递归渲染和放置的。另外,核心动画以父Layer的锚点将父Layer的subLayerTransform应用于每一个sublayer。咱们能够为sublayer transform设置视角观点或者其余效应。图A-4展现了一个示例,左边的有背景色,右边的没有背景色。ci
将Layer的masksToBounds属性设置为YES,将会致使全部的sublayer按照该Layer的bounds裁剪。
下面的CALayer属性影响sublayers的显示:
一个Layer能够显示特定颜色和宽度的边框,边框是沿着Layer的bounds矩形而且能够设置圆角值。图A-5展现了带有边框的Layer。注意,content和subLayers都是在Layer的边框下面渲染的。
下面的CALayer的属性影响Layer边框的展现:
Layers可以显示阴影效果,shadow的配置项包括:形状、opacity、color、模糊程度。若是咱们没有指定自定义的shadow形状,这个shadow取决于不彻底透明的Layer的一部分。图A-7展现了几个不一样版本且具备相同红色shadow样式的Layer。左边和中间的设置了背景色,所以阴影仅仅在Layer的边框外围显示。右边的不包含背景色,此时,shadow是被应用到Layer的content、border和subLayers。
这个Layer的opacity属性决定了后面的content穿过Layer显示多少。图A-8展现了opacity被设置为0.5的Layer。这属性是容许后面图片显示一部分。
下面CALayer属性指定Layer的opacity:
咱们可使用mask遮罩全部或者部分Layer的contents。Mask自己就是一个Layer,他的透明通道是被用于决定哪些部分将被遮盖以及哪些部分会被显示。Mask layer的content的不透明部分将会使下面的Layer的content显示出来,全透明的部分或者半透明的部分将会模糊化下面的content。图A-9展现了一个具备mask layer和两个不一样背景的Layer。左边layer的opacity是被设置为1.0。右边,layer的opacity是被设置为0.5,这将增长后面content透过mask layer显示出的量。
下面的CALayer属性为Layer指定mask: