提供CALayer
具有更好的性能
1令野。CoreAnimation動畫在單獨的線程中完成,不會阻塞主線程
2.只會重繪界面上變化的部分(局部刷新)
每個UIView都有自己的CALayer,而且每個CALayer都可以不斷地添加子CAL,CAL所在的CALayer被稱為父CAL貌亭,CAL的這種組織方式被稱為LayerTree
CoreAnimation動畫涉及到的API:
CAAnimation:它是所有動畫類的基類苞笨,實現(xiàn)了CAMediaTiming協(xié)議,提供了動畫的持續(xù)時間躁染,速度和重復計數(shù)等。CAAnimation還實現(xiàn)了CAAction協(xié)議架忌,該協(xié)議為CALayer動畫觸發(fā)的動作提供標準化響應
CATransition:CAAnimation的子類吞彤,CAAnimation可通過預置的過渡效果來控制calayer的過渡動畫
CAPropertyAnimation 它是capropertyAnimation的一個子類,它代表一個屬性動畫可通過+animationWithKeyPath類方法來創(chuàng)建屬性動畫實例叹放,該方法需要指定一個calayer支持動畫的屬性饰恕,然后通過它的子類(CABasicAnimation,CAKeyframeAnimation)控制calayer的動畫屬性慢慢地改變,即可實現(xiàn)calayer動畫
CAKeyframeAnimation:CAPropertyAnimation的子類井仰,支持關鍵幀的屬性動畫埋嵌,該動畫最大的特點在于可通過values屬性制定多個關鍵幀,通過多個關鍵幀可以制定動畫的各階段的關鍵值
CABasicAnimation:CAPA的子類俱恶。簡單控制CALayer層的屬性慢慢改變雹嗦,從而實現(xiàn)動畫效果。很多CALayer層的屬性值的修改默認會執(zhí)行這個動畫類合是,比如大小了罪,透明度,顏色等屬性端仰。
caanimationGroup:它是caanimation的子類,用于將多個動畫組合在一起進行
12.7.2使用CALayer
提供了一個layer類來創(chuàng)建CALayer層田藐,雖然CALayerh愛有一些子類荔烧,但實現(xiàn)一般的動畫使用CALayer即可。
所有的UIView都有一個默認的CALayer,通過UIView的layer屬性即可訪問 UIView上的CALayer層
步驟:
1.創(chuàng)建一個CALayer
2.設置CALayer的contents屬性CALayer所顯示的內(nèi)容汽久,該屬性通澈捉撸可指定一個cgimage,即代表該屬性通常可指定一個CGImage,即代表該CALayer將要顯示的圖片景醇。如果需要自行繪制該CALayer所顯示的內(nèi)容臀稚,可為CALayer指定delegate屬性,該屬性值應該是一個實現(xiàn)CALayerDelegate非正式協(xié)議的對象三痰,重寫該協(xié)議中的drawLayer:inContext:方法吧寺,即可完成CALayer的繪制
3.CALayer設置backgroundColor(背景色)窜管,frame,position(位置),anchorPoint(錨點),borderXxx(設置邊框相關屬性)稚机,shadowXxx (設置陰影相關屬性)