核心動畫 CAAnimation,有三個常用的重要的子類分別為:
CAAnimationGroup: 組動畫
CAPropertyAnimation:屬性動畫
CATransition:轉(zhuǎn)場動畫
其中還有一個很重要的细诸,必須要提出的協(xié)議CAMediaTiming,核心動畫關(guān)于時間類的控制 是遵守了CAMediaTiming中的協(xié)議內(nèi)容,里面可以設(shè)置以下屬性:
1.beginTime 動畫開始的時間 默認(rèn)為0
2.duration 動畫的持續(xù)時間 默認(rèn)為0 持續(xù)時間 受速度的影響 實際的動畫完成時間 = 持續(xù)時間/速度
3.speed 動畫播放的速度 默認(rèn)為1 速度設(shè)置成0 可以暫停動畫
speed 2秒? duration 60秒 動畫真正播放完成的時間 30秒
4.timeOffset 動畫播放時間的偏移量
5.repeatCount 動畫的循環(huán)次數(shù) 默認(rèn)是0 只播放一次
6.repeatDuration 動畫循環(huán)的持續(xù)時間? 只能設(shè)置其中的一個屬性? repeatCount/repeatDuration
7.autoreverses? 是否以動畫的形式 返回到播放之前的狀態(tài)
8.fillMode 設(shè)置當(dāng)前對象在非活動時間段的狀態(tài)
要想fillMode有效 需設(shè)置removedOnCompletion = NO? ?????????
kCAFillModeForwards 當(dāng)動畫結(jié)束后,layer會一直保持著動畫最后的狀態(tài)
kCAFillModeBackwards 立即進(jìn)入動畫的初始狀態(tài)并等待動畫開始
kCAFillModeBoth 動畫加入后開始之前 layer處于動畫初始狀態(tài) 動畫結(jié)束后layer保持動畫最后的狀態(tài)
kCAFillModeRemoved 默認(rèn)值 動畫結(jié)束后 layer會恢復(fù)到之前的狀態(tài)
1?? CAAnimationGroup: 組動畫
CAAnimation的子類猩系,可以保存一組動畫對象寇甸,將CAAnimationGroup對象加入層后,組中所有動畫對象可以同時并發(fā)運行
屬性解析:
animations:用來保存一組動畫對象的NSArray
默認(rèn)情況下拿霉,一組動畫對象是同時運行的,也可以通過設(shè)置動畫對象的beginTime屬性來更改動畫的開始時間
動畫組一般添加的都是基礎(chǔ)動畫涵防,組動畫可以分別單獨的去實現(xiàn)一個個基礎(chǔ)動畫并且不會相互影響沪铭,也可以合起來實現(xiàn),實現(xiàn)幾種效果的結(jié)合火窒。默認(rèn)情況下驮肉,一組動畫對象是同時運行的离钝,也可以通過設(shè)置動畫對象的beginTime屬性來更改動畫的開始時間
2??? CAPropertyAnimation:屬性動畫
CAPropertyAnimation也是個抽象類褪储,本身不具備動畫效果,只有子類才有,CABasicAnimation和CAKeyframeAnimation鲤竹,CABasicAnimation可看做是只有2個關(guān)鍵幀的CAKeyframeAnimation關(guān)鍵幀動畫
1.CABasicAnimation,就是基礎(chǔ)動畫碘橘,能夠?qū)崿F(xiàn)簡單的動畫效果⊙銮荩基礎(chǔ)動畫可以實現(xiàn)動畫的平移纺蛆、旋轉(zhuǎn)、縮放温峭、閃爍识颊、路徑等。
這其中需要一個很重要的屬性transform清笨,實現(xiàn)平移動畫刃跛,我們可以通過transform.translation或者水平transform.translation.x或者垂直平移transform.translation.y添加動畫。
旋轉(zhuǎn)動畫的實現(xiàn)需要設(shè)置3D屬性x检号、y齐苛、z,以及旋轉(zhuǎn)角度凹蜂,其它屬性設(shè)置與平移動畫一樣玛痊。
CATransform3Dtransform3d =CATransform3DMakeRotation(3.1415926,0,0,180);? animation.toValue= [NSValuevalueWithCATransform3D:transform3d];
縮放動畫狂打,就是通過設(shè)置transform.scale這個是圖的屬性路徑,設(shè)置scale值就可以達(dá)到縮放的效果:
CABasicAnimation*animation = [CABasicAnimationanimationWithKeyPath:@"transform.scale"];
2.CAKeyframeAnimation
对省,就是關(guān)鍵幀動畫,能夠讓動畫實現(xiàn)復(fù)雜的動畫效果蒿涎。
相關(guān)屬性:
?*values 關(guān)鍵幀數(shù)組
*path? 路徑軌跡 ,可以設(shè)置一個CGPathRef萤捆、CGMutablePathRef俗或,讓圖層按照路徑軌跡移動。path只對CALayer的anchorPoint和position起作用辛慰。注意:設(shè)置path之后 values會失效
*keyTimes:關(guān)鍵幀所對應(yīng)的時間點帅腌,可以為對應(yīng)的關(guān)鍵幀指定對應(yīng)的時間點麻汰,其取值范圍為0到1.0
keyTimes中的每一個時間值都對應(yīng)values中的每一幀。如果沒有設(shè)置keyTimes五鲫,各個關(guān)鍵幀的時間是平分的
3??? CATransition:轉(zhuǎn)場動畫
轉(zhuǎn)場動畫能夠為圖層提供移出屏幕和移入屏幕的動畫效果
轉(zhuǎn)場動畫的過濾效果:
kCATransitionFade? 交叉淡化過渡
kCATransitionMoveIn 新視圖移到舊視圖上面
kCATransitionPush? 新視圖把舊視圖推出去
kCATransitionReveal 將舊視圖移開,顯示下面的新視圖
私有api
pageCurl? ? ? ? ? ? 向上翻一頁
pageUnCurl? ? ? ? ? 向下翻一頁
rippleEffect? ? ? ? 滴水效果
suckEffect? ? ? ? ? 收縮效果 如一塊布被抽走
cube? ? ? ? ? ? ? ? 立方體效果
oglFlip? ? ? ? ? ? 上下翻轉(zhuǎn)效果