UIView和CALayer的區別

2021-06-18 07:31:37 字數 917 閱讀 8281

1.uiview是ios系統中介面元素的基礎,所有的介面元素都繼承自它。它本身完全是由coreanimation來實現的(mac下似乎不是這樣)。它真正的繪圖部分,是由乙個叫calayer(coreanimationlayer)的類來管理。uiview本身,更像是乙個calayer的管理器,訪問它的跟繪圖和跟座標有關的屬性,例如frame,bounds等等,實際上內部都是在訪問它所包含的calayer的相關屬性。

2.uiview有個layer屬性,可以返回它的主calayer例項,uiview有乙個layerclass方法,返回主layer所使用的類,uiview的子類,可以通過過載這個方法,來讓uiview使用不同的calayer來顯示,例如通過

1- (class) layerclass

使某個uiview的子類使用gl來進行繪製。

3.uiview的calayer類似uiview的子view樹形結構,也可以向它的layer上新增子layer,來完成某些特殊的表示。例如下面的**

1graycover = [[calayer alloc] init];

2graycover.backgroundcolor = [[[uicolor blackcolor]colorwithalphacomponent:0.2] cgcolor];

3[self.layer addsublayer: graycover];

會在目標view上敷上一層黑色的透明薄膜。

4.uiview的layer樹形在系統內部,被系統維護著三份copy(這段理解有點吃不準)。

第乙份,邏輯樹,就是**裡可以操縱的,例如更改layer的屬性等等就在這乙份。

第二份,動畫樹,這是乙個中間層,系統正在這一層上更改屬性,進行各種渲染操作。

第三份,顯示樹,這棵樹的內容是當前正被顯示在螢幕上的內容。

這三棵樹的邏輯結構都是一樣的,區別只有各自的屬性。

UIView 和 CAlayer 的關係

calayer是uiview中的乙個屬性,我們在給乙個view設定圓角,邊框,陰影度,偏移度的時候都會用到這個屬性。比如 uiview view nil view.layer bordercolor uicolor redcolor cgcolor calayer是quartzcore庫內的類,是i...

UIView和CALayer的那些事兒

繼承結構 calayer的繼承結構為 nsobject uiview是檢視的基類,uiviewcontroller是檢視控制器的基類,uiresponder是表示乙個可以在螢幕上響應觸控事件的物件 所屬框架 calayer是在 system library frameworks quartzcore...

UIView 和 CALayer 的區別和聯絡。

首先uiview可以響應事件,layer不可以。在 uiresponder中定義了處理各種事件和事件傳遞的介面,而calayer直接繼承 nsobject,並沒有相應的處理事件的介面。下面列舉一些處理觸控事件的介面 2.uiview主要是對顯示內容的管理而 calayer 主要側重顯示內容的繪製,c...