? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? UIView和CALayer關系
UIView繼承自UIResponder碴犬,主要特點是可以響應觸摸事件絮宁。而CALayer實際的圖層內(nèi)容管理。大家干的的事情不一樣服协,是兩個東西绍昂,大家的存在互不影響,理所當然偿荷。
UIView不具備顯示功能窘游,擁有顯示功能的是它內(nèi)部的圖層即CALayer屬性
當UIView需要顯示到屏幕上時,會調(diào)用DrawRect:方法進行繪圖跳纳,并且將所有的內(nèi)容繪制在自己的圖層上Property()CALayer *layer忍饰,繪圖完成后,系統(tǒng)會將圖層拷貝到屏幕上寺庄,于是就完成了UIView的顯示
UIView 做為 Layer 的 CALayerDelegate,View 的顯示內(nèi)容由內(nèi)部的 CALayer 的 繪制
CALayer 是默認修改屬性支持隱式動畫的艾蓝,在給 UIView 的 Layer 做動畫的時候,View 作為 Layer 的代理斗塘,Layer 通過 actionForLayer:forKey:向 View請求相應的 action(動畫行為),對于每一個 UIView 都有一個 layer,把這個 layer 且稱作RootLayer,而不是 View 的根 Layer的叫做 非 RootLayer赢织。我們對UIView的屬性修改時時不會產(chǎn)生默認動畫,而對單獨 layer屬性直接修改會馍盟,這個默認動畫的時間缺省值是0.25s
UIView本身敌厘,更像是一個CALayer的管理器,訪問它的跟繪圖和跟坐標有關的屬性朽合,例如frame,bounds等等饱狂, 實際上內(nèi)部都是在訪問它所包含的CALayer的相關屬性曹步。