介紹
之前我們已經討論了View動畫和基於AutoLayout的動畫,現在我們已經能熟練的運用UIView動畫了,是時候挖掘一些更深層次的、更底層的、更Powerful的Core Animation API了
這章中我們將一起探索Layer層次的動畫
Views vs. layers
首先我們來看看View和Layer之間的區別與聯絡
Layer是一個簡單的類,其中只包含了幾個圖片屬性,每一個UIView後都有一個Layer,你可以認為Layer就是View類更低的那一層,Layer與View的區別如下:
-
Layer是一個model物件,它包含資料屬性,沒有邏輯,沒有複雜的AutoLayout依賴,它不處理任何使用者互動。
-
它包含了邊線、邊框顏色、陰影及其位置等屬性
-
最後,Core Animation 優化了Layer內容的快取, 可以由GPU直接快速的繪圖
View
-
複雜的佈局體系、自動佈局等
-
使用者互動
-
經常包含自定義邏輯、自定義畫圖程式碼,常在CPU主執行緒執行
-
非常靈活、強大,擁有很多子類
Layer
-
簡單的佈局體系、快速的佈局、繪製
-
不在響應鏈上
-
預設無自定義邏輯,常常由GPU直接快取、繪製
-
不是很靈活,子類較少
什麼時候選擇Layer animation
如果選擇ViewAnimation能夠完成你的需求,就應當去使用View Animation,如果你需要更加靈活的、更強大的動畫效果,你應該使用Layer animation