提供CALayer
具有更好的性能
1。CoreAnimation動(dòng)畫在單獨(dú)的線程中完成,不會(huì)阻塞主線程
2.只會(huì)重繪界面上變化的部分(局部刷新)
每個(gè)UIView都有自己的CALayer,而且每個(gè)CALayer都可以不斷地添加子CAL,CAL所在的CALayer被稱為父CAL,CAL的這種組織方式被稱為L(zhǎng)ayerTree
CoreAnimation動(dòng)畫涉及到的API:
CAAnimation:它是所有動(dòng)畫類的基類,實(shí)現(xiàn)了CAMediaTiming協(xié)議,提供了動(dòng)畫的持續(xù)時(shí)間,速度和重復(fù)計(jì)數(shù)等。CAAnimation還實(shí)現(xiàn)了CAAction協(xié)議,該協(xié)議為CALayer動(dòng)畫觸發(fā)的動(dòng)作提供標(biāo)準(zhǔn)化響應(yīng)
CATransition:CAAnimation的子類,CAAnimation可通過預(yù)置的過渡效果來控制calayer的過渡動(dòng)畫
CAPropertyAnimation 它是capropertyAnimation的一個(gè)子類,它代表一個(gè)屬性動(dòng)畫可通過+animationWithKeyPath類方法來創(chuàng)建屬性動(dòng)畫實(shí)例,該方法需要指定一個(gè)calayer支持動(dòng)畫的屬性,然后通過它的子類(CABasicAnimation,CAKeyframeAnimation)控制calayer的動(dòng)畫屬性慢慢地改變,即可實(shí)現(xiàn)calayer動(dòng)畫
CAKeyframeAnimation:CAPropertyAnimation的子類,支持關(guān)鍵幀的屬性動(dòng)畫,該動(dòng)畫最大的特點(diǎn)在于可通過values屬性制定多個(gè)關(guān)鍵幀,通過多個(gè)關(guān)鍵幀可以制定動(dòng)畫的各階段的關(guān)鍵值
CABasicAnimation:CAPA的子類。簡(jiǎn)單控制CALayer層的屬性慢慢改變,從而實(shí)現(xiàn)動(dòng)畫效果。很多CALayer層的屬性值的修改默認(rèn)會(huì)執(zhí)行這個(gè)動(dòng)畫類,比如大小,透明度,顏色等屬性。
caanimationGroup:它是caanimation的子類,用于將多個(gè)動(dòng)畫組合在一起進(jìn)行
12.7.2使用CALayer
提供了一個(gè)layer類來創(chuàng)建CALayer層,雖然CALayerh愛有一些子類,但實(shí)現(xiàn)一般的動(dòng)畫使用CALayer即可。
所有的UIView都有一個(gè)默認(rèn)的CALayer,通過UIView的layer屬性即可訪問 UIView上的CALayer層
步驟:
1.創(chuàng)建一個(gè)CALayer
2.設(shè)置CALayer的contents屬性CALayer所顯示的內(nèi)容,該屬性通??芍付ㄒ粋€(gè)cgimage,即代表該屬性通常可指定一個(gè)CGImage,即代表該CALayer將要顯示的圖片。如果需要自行繪制該CALayer所顯示的內(nèi)容,可為CALayer指定delegate屬性,該屬性值應(yīng)該是一個(gè)實(shí)現(xiàn)CALayerDelegate非正式協(xié)議的對(duì)象,重寫該協(xié)議中的drawLayer:inContext:方法,即可完成CALayer的繪制
3.CALayer設(shè)置backgroundColor(背景色),frame,position(位置),anchorPoint(錨點(diǎn)),borderXxx(設(shè)置邊框相關(guān)屬性),shadowXxx (設(shè)置陰影相關(guān)屬性)