CALayer與UIView的區(qū)別

CALayer與UIView的區(qū)別

基礎

自己的理解

  • 1、UIView主要是用于視圖在屏幕上的展示,CALayer是對UIView所要展示的渲染不會直接展示到屏幕上;
  • 2、UIView可以響應用戶的操作而Layer不可以;

網(wǎng)上的資料

  • 1、每個UIView都有一個CALyer實例的圖層屬性,視圖的職責就是創(chuàng)建和管理這些圖層,其實真正顯示的和用來做動畫的是背后關聯(lián)的圖層,UIView僅僅是對他的一個封裝,提供了一些類似于處理用戶交互的具體功能的接口。其實,UIView更像是一個CALayer的管理器,訪問它的有關繪圖跟坐標的屬性,其實底層都是在訪問CALayer的屬性
  • 2、每個UIView內(nèi)部都有一個CALayer在背后提供內(nèi)容的繪制和顯示,并且在UIView的尺寸樣式都是由內(nèi)部的Layer所提供的,相同的是兩者都有樹狀層級結構,layer內(nèi)部youSublayers,View內(nèi)部有Subviews,但是,Layer比View多個AnchorPoint。
  • 3、Layer內(nèi)部維持著三份layer tree(圖層樹)分別是:presentLayer Tree(動畫樹)、modeLayer Tree(模型樹)、Render Tree(渲染樹),在做 iOS動畫的時候,我們修改動畫的屬性,在動畫的其實是 Layer 的 presentLayer的屬性值,而最終展示在界面上的其實是提供 View的modelLayer
  • 4、兩者最明顯的區(qū)別是 View可以接受并處理事件,而 Layer 不可以。
  • 5、在View即將顯示的時候,UIView會自動的把圖層的delegate設置為自己,并提供了一個displayLayer:的實現(xiàn)。
  • 6、CALyer是默認修改屬性支持隱式動畫
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺ios動畫全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,696評論 6 30
  • 在iOS中隨處都可以看到絢麗的動畫效果,實現(xiàn)這些動畫的過程并不復雜,今天將帶大家一窺iOS動畫全貌。在這里你可以看...
    F麥子閱讀 5,271評論 5 13
  • jlsdflfsfjf 總接來說就是如下幾點: 1.每一個UIView都有一個CALayer實例的圖層屬性,視圖的...
    奕十八閱讀 1,003評論 0 0
  • Core Animation其實是一個令人誤解的命名。你可能認為它只是用來做動畫的,但實際上它是從一個叫做Laye...
    小貓仔閱讀 3,968評論 1 4
  • 前言 前面發(fā)了一篇iOS 面試的文章,在說到 UIView 和 CALayer 的區(qū)別和聯(lián)系的時候,被喵神指出沒有...
    Mz楓閱讀 858評論 0 4

友情鏈接更多精彩內(nèi)容