動畫庫?太小看它了
Core Animation(核心動畫)并不僅僅是動畫幕帆,它其實最早的框架名字叫 Layer Kit(層開發(fā)包)。
Core Animation 的工作內容是所有屏幕上可見的內容赖条,這些可視化的內容的組織的形式就是一棵 layer tree(層樹)失乾。
view 和 layer 一樣嗎
layer 是處理所有屏幕顯示相關的工作的, 而 view 在這點上纬乍,只是 layer的一個wrapper碱茁,內部還是layer在幫你干。除此之外仿贬,view 還包括了一些響應鏈來處理事件纽竣,如觸摸等,而 layer 對此毫無興趣。
這樣的設計蜓氨,可以使得庫開發(fā)者只需要在ios和mac上在view上做修改即可聋袋,如此, ios上是 uiview 體系穴吹,而mac上是 nsview 體系幽勒,而layer層卻都是 core animation 的。另一方面港令,使用者在處理 ios 和 mac 跨平臺的時候啥容,layer 層可以幾乎不用修改就可以在兩個平臺上獲得相同的效果。所以在需要款平臺(ios和mac)的時候顷霹,多多使用 layer 而非 view 來處理顯示的內容吧咪惠。
iOS 上一個view創(chuàng)建后,通常會內部連帶創(chuàng)建一個默認的 layer泼返。而 mac 上一個你需要自己創(chuàng)建 layer硝逢。
雖然 view 作為一個 layer 的 wrapper,但是一些功能還是必須直接操作 layer绅喉, 如下面這些功能在 view 上并沒有提供接口:
?- 陰影,圓角叫乌,邊框顏色
?- 3D的變換
?- 非矩形的邊框
?- 透明遮罩
?- 多級非線性動畫
layer 在代碼中就是一個 CALayer.
layer 和 view 一樣柴罐,可以內部添加孩子。它們在設計上是一個并行的繼承樹憨奸,當你一個 view 被添加或移除的時候革屠,其對應的 layer 會在layer的樹中也會相應的添加或移除。
其實內部擁有四個并行的繼承樹排宰,除了 view 樹似芝, layer樹, 另外兩個是 表示樹 和 顯示樹板甘。
使用 layer
添加 QuartzCore 框架党瓮,并引用頭文件 <QuartzCore/QuartzCore.h>