Core Animation是一個復合引擎咨油,它的職責就是盡可能快地組合屏幕上不同的可視內(nèi)容您炉,這個內(nèi)容是被分解成獨立的圖層,存儲在一個叫做圖層樹的體系之中臼勉。于是這個樹形成了UIKit以及在iOS應用程序當中你所能在屏幕上看見的一切的基礎邻吭。
UIView
在iOS當中,所有的視圖都從一個叫做UIVIew的基類派生而來,UIView可以處理觸摸事件,可以支持基于Core Graphics繪圖胖缤,可以做仿射變換(例如旋轉(zhuǎn)或者縮放)逊桦,或者簡單的類似于滑動或者漸變的動畫。
CALayer
CALayer類在概念上和UIView類似,同樣也是一些被層級關系樹管理的矩形塊,同樣也可以包含一些內(nèi)容(像圖片,文本或者背景色)枯芬,管理子圖層的位置。它們有一些方法和屬性用來做動畫和變換采郎。和UIView最大的不同是CALayer不處理用戶的交互千所。
CALayer并不清楚具體的響應鏈(iOS通過視圖層級關系用來傳送觸摸事件的機制),于是它并不能夠響應事件蒜埋,即使它提供了一些方法來判斷是否一個觸點在圖層的范圍之內(nèi)(具體見第三章淫痰,“圖層的幾何學”)
每一個UIview都有一個CALayer實例的圖層屬性,視圖的職責就是創(chuàng)建并管理這個圖層整份,以確保當子視圖在層級關系中添加或者被移除的時候待错,他們關聯(lián)的圖層也同樣對應在層級關系樹當中有相同的操作。
實際上這些背后關聯(lián)的圖層才是真正用來在屏幕上顯示和做動畫烈评,UIView僅僅是對它的一個封裝火俄,提供了一些iOS類似于處理觸摸的具體功能,以及Core Animation底層方法的高級接口讲冠。