? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 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)屬性。