在渲染過程當中,核心動畫獲取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: