一、簡單介紹
項目中常用的動畫效果基本使用CABasicAnimation就能完成霎桅,它CAPropertyAnimation的子類
屬性解析:
fromValue:keyPath相應(yīng)屬性的初始值
toValue:keyPath相應(yīng)屬性的結(jié)束值
核心動畫是一種假象動畫
隨著動畫的進(jìn)行尚氛,在長度為duration的持續(xù)時間內(nèi)视粮,keyPath相應(yīng)屬性的值從fromValue漸漸地變?yōu)閠oValue
如果fillMode=kCAFillModeForwards和removedOnComletion=NO采桃,那么在動畫執(zhí)行完畢后戏阅,圖層會保持顯示動畫執(zhí)行后的狀態(tài)。但在實質(zhì)上啤它,圖層的屬性值還是動畫執(zhí)行前的初始值奕筐,并沒有真正被改變。
比如变骡,CALayer的position初始值為(0,0)离赫,CABasicAnimation的fromValue為(10,10),toValue為(100,100)塌碌,雖然動畫執(zhí)行完畢后圖層保持在(100,100)這個位置渊胸,實質(zhì)上圖層的position還是為(0,0)
- Core Animation的使用步驟*
1.使用它需要先添加QuartzCore.framework框架和引入主頭文件<QuartzCore/QuartzCore.h>(iOS7不需要)
2.初始化一個CAAnimation對象,并設(shè)置一些動畫相關(guān)屬性
3.通過調(diào)用CALayer的addAnimation:forKey:方法增加CAAnimation對象到CALayer中台妆,這樣就能開始執(zhí)行動畫了
4.通過調(diào)用CALayer的removeAnimationForKey:方法可以停止CALayer中的動畫
二仲义、實例
-
創(chuàng)建動畫對象
CABasicAnimation *rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"]; rotationAnimation.toValue = @(2 * M_PI); rotationAnimation.repeatCount = MAXFLOAT; rotationAnimation.duration = 5; rotationAnimation.removedOnCompletion = NO;
通過animationWithKeyPath設(shè)置不同動畫效果
常用KepPath動畫效果
transform.scale = 比例縮放
transform.scale.x = 寬的比例縮放
transform.scale.y = 高的比例縮放
transform.rotation = 平面的旋轉(zhuǎn)
transform.rotation.y =Y方向旋轉(zhuǎn)
transform.rotation.x = X方向旋轉(zhuǎn)
opacity = 透明度變化把動畫對象添加到你想運用動畫的空間圖層上
[self.iconView.layer addAnimation:rotationAnimation forKey:nil];
三怠褐、小結(jié)
所有動畫對象的父類,負(fù)責(zé)控制動畫的持續(xù)時間和速度,是個抽象類募寨,不能直接使用,應(yīng)該使用它具體的子類
屬性解析:(紅色代表來自CAMediaTiming協(xié)議的屬性)
duration:動畫的持續(xù)時間
repeatCount:動畫的重復(fù)次數(shù)
repeatDuration:動畫的重復(fù)時間
removedOnCompletion:默認(rèn)為YES信姓,代表動畫執(zhí)行完畢后就從圖層上移除蟋定,圖形會恢復(fù)到動畫執(zhí)行前的狀態(tài)。如果想讓圖層保持顯示動畫執(zhí)行后的狀態(tài),那就設(shè)置為NO遗座,不過還要設(shè)置fillMode為kCAFillModeForwards
fillMode:決定當(dāng)前對象在非active時間段的行為.比如動畫開始之前,動畫結(jié)束之后
beginTime:可以用來設(shè)置動畫延遲執(zhí)行時間舀凛,若想延遲2s,就設(shè)置為CACurrentMediaTime()+2途蒋,CACurrentMediaTime()為圖層的當(dāng)前時間
timingFunction:速度控制函數(shù)猛遍,控制動畫運行的節(jié)奏
delegate:動畫代理