以前咱們已經討論了View動畫和基於AutoLayout的動畫,如今咱們已經能熟練的運用UIView動畫了,是時候挖掘一些更深層次的、更底層的、更Powerful的Core Animation API了
這章中咱們將一塊兒探索Layer層次的動畫緩存
首先咱們來看看View和Layer之間的區別與聯繫
Layer是一個簡單的類,其中只包含了幾個圖片屬性,每個UIView後都有一個Layer,你能夠認爲Layer就是View類更低的那一層,Layer與View的區別以下:佈局
Layer是一個model對象,它包含數據屬性,沒有邏輯,沒有複雜的AutoLayout依賴,它不處理任何用戶交互。優化
它包含了邊線、邊框顏色、陰影及其位置等屬性動畫
最後,Core Animation 優化了Layer內容的緩存, 能夠由GPU直接快速的繪圖線程
複雜的佈局體系、自動佈局等對象
用戶交互圖片
常常包含自定義邏輯、自定義畫圖代碼,常在CPU主線程執行animation
很是靈活、強大,擁有不少子類io
簡單的佈局體系、快速的佈局、繪製model
不在響應鏈上
默認無自定義邏輯,經常由GPU直接緩存、繪製
不是很靈活,子類較少
若是選擇ViewAnimation可以完成你的需求,就應當去使用View Animation,若是你須要更加靈活的、更強大的動畫效果,你應該使用Layer animation