iOS開發(fā)之-(筆或面試)UIWindow和UIView和CALayer的聯(lián)系和區(qū)別

在很多時(shí)候,都會(huì)筆試或者面試問到這個(gè)問題,其=自己總結(jié)了一下,可能其實(shí)和其他說的大同小異,但是結(jié)構(gòu)要清晰。

一、UIWindow和UIView和CALayer的聯(lián)系和區(qū)別;

//喜歡的點(diǎn)個(gè)??????????????????????????????,關(guān)注成為粉絲吧。

1.UIWindow:

其實(shí)先說一下UIWindow,它在整個(gè)app當(dāng)中只有一個(gè)UIWindow;

主要作用就是:提供一個(gè)區(qū)域用來顯示UIView;將事件分發(fā)給UIView;與UIViewController一起處理屏幕的旋轉(zhuǎn)事件。

2.接下來,當(dāng)然就是常用到的UIView和CALayer;

UIView的繼承結(jié)構(gòu)為:UIResponder:NSObject

所屬的框架是:/System/Library/Frameworks/UIKit.framework。UIKit主要是用來構(gòu)建用戶界面的,并且可以響應(yīng)事件。

當(dāng)然對(duì)于UIView,側(cè)重于對(duì)內(nèi)容的顯示管理;其實(shí)是相對(duì)于CALayer的高層封裝。

3.CALayer

其實(shí)就是一個(gè)圖層,UIView之所以能顯示在屏幕上,主要是它內(nèi)部有一個(gè)CALayer對(duì)象。在創(chuàng)建UIView時(shí),它內(nèi)部會(huì)自動(dòng)創(chuàng)建一個(gè)圖層,當(dāng)UIView需要顯示在屏幕上的時(shí)候,會(huì)調(diào)用drawRect:方法進(jìn)行繪圖,并且會(huì)將所有內(nèi)容繪制到自己的圖層上,繪圖完畢后,系統(tǒng)會(huì)將圖層拷貝到屏幕上,這樣完成UIView的顯示。

CALayer的繼承結(jié)構(gòu):NSObject

也就是直接繼承NSObject,而不能夠響應(yīng)事件。

所屬的框架:/System/Library/Frameworks/QuartzCore.framework;

總結(jié)一下:(可能不太恰當(dāng),自己面試或者傳授的時(shí)候,進(jìn)行整理可以)

UIWindow、UIView、CALayer三者的關(guān)系

UIWindow:是UIView的子類,主要作用就是:提供一個(gè)區(qū)域來顯示UIView;事件的分發(fā)

UIView:用來顯示內(nèi)容,可以進(jìn)行用戶事件的處理;

CALayer:用來繪制內(nèi)容的,對(duì)內(nèi)容進(jìn)行動(dòng)畫處理,在UIView上進(jìn)行顯示,不能處理響應(yīng)事件。

UIView和CALayer是相互依賴的關(guān)系。其實(shí)一切都可以從CALayer說起。

//喜歡的點(diǎn)個(gè)??????????????????????????????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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