2019-03-07

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UIView和CALayer關(guān)系

UIView繼承自UIResponder,主要特點(diǎn)是可以響應(yīng)觸摸事件。而CALayer實(shí)際的圖層內(nèi)容管理。大家干的的事情不一樣,是兩個(gè)東西,大家的存在互不影響,理所當(dāng)然。

UIView不具備顯示功能,擁有顯示功能的是它內(nèi)部的圖層即CALayer屬性

當(dāng)UIView需要顯示到屏幕上時(shí),會(huì)調(diào)用DrawRect:方法進(jìn)行繪圖,并且將所有的內(nèi)容繪制在自己的圖層上Property()CALayer *layer,繪圖完成后,系統(tǒng)會(huì)將圖層拷貝到屏幕上,于是就完成了UIView的顯示

UIView 做為 Layer 的 CALayerDelegate,View 的顯示內(nèi)容由內(nèi)部的 CALayer 的 繪制

CALayer 是默認(rèn)修改屬性支持隱式動(dòng)畫(huà)的,在給 UIView 的 Layer 做動(dòng)畫(huà)的時(shí)候,View 作為 Layer 的代理,Layer 通過(guò) actionForLayer:forKey:向 View請(qǐng)求相應(yīng)的 action(動(dòng)畫(huà)行為),對(duì)于每一個(gè) UIView 都有一個(gè) layer,把這個(gè) layer 且稱作RootLayer,而不是 View 的根 Layer的叫做 非 RootLayer。我們對(duì)UIView的屬性修改時(shí)時(shí)不會(huì)產(chǎn)生默認(rèn)動(dòng)畫(huà),而對(duì)單獨(dú) layer屬性直接修改會(huì),這個(gè)默認(rèn)動(dòng)畫(huà)的時(shí)間缺省值是0.25s

UIView本身,更像是一個(gè)CALayer的管理器,訪問(wèn)它的跟繪圖和跟坐標(biāo)有關(guān)的屬性,例如frame,bounds等等, 實(shí)際上內(nèi)部都是在訪問(wèn)它所包含的CALayer的相關(guān)屬性。

最后編輯于
?著作權(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),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 1 CALayer IOS SDK詳解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi閱讀 5,345評(píng)論 3 23
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜,今天將帶大家一窺iOS動(dòng)畫(huà)全貌。在這里你可以看...
    F麥子閱讀 5,272評(píng)論 5 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,680評(píng)論 1 32
  • Core Animation其實(shí)是一個(gè)令人誤解的命名。你可能認(rèn)為它只是用來(lái)做動(dòng)畫(huà)的,但實(shí)際上它是從一個(gè)叫做Laye...
    小貓仔閱讀 3,970評(píng)論 1 4
  • 感同身受這個(gè)詞是不可能被詮釋的,我們也只是以我們認(rèn)為的去理解他人,當(dāng)開(kāi)始理解他人的時(shí)候,我們要有這樣的意識(shí),從那時(shí)...
    言瘋之閱讀 410評(píng)論 0 0

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