首先uiview可以響應事件,layer不可以。
在 uiresponder中定義了處理各種事件和事件傳遞的介面, 而calayer直接繼承 nsobject,並沒有相應的處理事件的介面。
下面列舉一些處理觸控事件的介面
2.uiview主要是對顯示內容的管理而 calayer 主要側重顯示內容的繪製,calayer是繪圖部分,uiview本身更像是乙個calayer的管理器,訪問它的跟繪圖和跟座標有關的屬性,例如frame,bounds等,實際上內部都是在訪問它所包含的calayer的相關屬性。
總結:
使用uiview和calayer都能實現動畫效果,但是在真實的開發中,一般還是主要使用uiview封裝的動畫,而很少使用calayer的動畫。
calayer核心動畫與uiview動畫的區別:
uiview封裝的動畫執行完畢之後不會**。即如果是通過calayer核心動畫改變layer的位置狀態,表面上看雖然已經改變了,但是實際上它的位置是沒有改變的。
1.ios中我們能看到的控制項都是uiview的子類,比如uibutton uilabel uitextfield uiimageview等等
2.uiview能夠在螢幕的顯示是因為在建立它的時候內部自動新增乙個calayer圖層,通過這個圖層在螢幕上顯示的時候會呼叫乙個drawrect: 的方法,完成繪圖,才能在螢幕上顯示
3.calayer 本身就具有顯示功能,但是它不能響應使用者的互動事件,如果只是單純的顯示乙個圖形,此時你可以使用calayer建立或者是使用uiview建立,但是如果這個圖形想響應使用者互動事件,必須使用uiview或者子類
UIView和CALayer的區別
1.uiview是ios系統中介面元素的基礎,所有的介面元素都繼承自它。它本身完全是由coreanimation來實現的 mac下似乎不是這樣 它真正的繪圖部分,是由乙個叫calayer coreanimationlayer 的類來管理。uiview本身,更像是乙個calayer的管理器,訪問它的跟...
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...