? ? ? ?UIView和CALayer概念上很相似,是一些被層級關(guān)系樹管理的矩形塊,同樣也可以包含一些內(nèi)容,管理子圖層的位置。
? ? ? ? UIView:屬于UIKit.framework框架,繼承于UIResponder,響應(yīng)區(qū)域的觸摸事件、布局和管理一個或者多個子視圖。
? ? ? ? CALAyer:屬于QuartzCore.framework,是用來繪制內(nèi)容的,對內(nèi)容進行動畫處理,繼承于NSObject,不能處理用戶事件。
? ? ? ?每一個UIView都有一個CALayer實例的圖層屬性,我們也可以通過UIView的layer屬性訪問這個圖層。UIView的職責(zé)就是創(chuàng)建并管理這個圖層,以確保當(dāng)子視圖在層級關(guān)系中添加或者被移除的時候,他們關(guān)聯(lián)的圖層也同樣對應(yīng)在層級關(guān)系樹中執(zhí)行相同的操作。
? ? ? ? 對于UIView視圖來說真正的負(fù)責(zé)內(nèi)容展示的其實是它內(nèi)部的CALayer,UIView只是將自身的展示任務(wù)交給了內(nèi)部的CALayer完成,而它還肩負(fù)著一些其它的任務(wù),比如說用戶的交互響應(yīng),提供一些Core Animation底層方法的高級接口等。