一类咧、CoreAnimation
的介紹
Core Animation
是一組非常強大的動畫處理API,使用它能做出非常絢麗的動畫效果,而且往往是事半功倍,使用它需要添加QuartzCore.framework
和引入對應(yīng)的框架<QuartzCore/QuartzCore.h>
.
二、CoreAnimation
的動畫對象CAAnimation
-
CAPropertyAnimation
:CAAnimation
的子類飞醉,也是個抽象類膀跌,要想創(chuàng)建動畫對象遭商,應(yīng)該使用它的兩個子類:CABasicAnimation
和CAKeyframeAnimation
.
keyPath
:CoreAnimation 的 keyPath 是針對layer的屬性來的,凡是屬性備注最后又Animatable的都能用來當(dāng)做動畫屬性
常用的動畫屬性如下表
屬性 | 注釋 |
---|---|
bounds | 尺寸 |
position | 位置 |
zPosition | z軸位置 |
anchorPoint | 錨點 |
anchorPointZ | z軸錨點 |
hidden | 隱藏 |
borderWidth | 邊框?qū)挾?/td> |
borderColor | 邊框顏色 |
cornerRadius | 圓角 |
opacity | 透明度 |
shadowColor | 陰影顏色 |
shadowOffset | 陰影偏移 |
shadowOpacity | 陰影透明度 |
shadowRadius | 陰影圓角 |
transform | transform.translation.x(y, z) 平移 transform.scale.x(y, z)縮放 transform.rotation.x(y, z) 旋轉(zhuǎn)捅伤,z軸的動畫劫流,在沒有設(shè)置透視效果的情況下看不到,所以一般不用,要看到z軸的動畫一般直接用transfrom來做在keyPath,并設(shè)置CATransform3D結(jié)構(gòu)體對象的m34屬性 |
strokeEnd | CAShapeLayer(終點) |
strokeStart | CAShapeLayer(起點) |
colors | CAGradientLayer(漸變色數(shù)組) |
locations | CAGradientLayer(漸變色位置數(shù)組) |
startPoint | CAGradientLayer(開始位置凡蚜,默認是0.5暑始,0) |
endPoint | CAGradientLayer(結(jié)束位置,默認是0.5,1) |
instanceCount | CAReplicatorLayer(復(fù)制數(shù)) |
instanceTransform | CAReplicatorLayer(賦值層形變) |
-
CABasicAnimation
:根據(jù)keyPath設(shè)置layer動畫的起始位置和結(jié)束位置,實現(xiàn)單步動畫 -
CAKeyframeAnimation
:有多個變化組合而成的動畫
CAKeyframeAnimation
的屬性設(shè)置,CABasicAnimation
可以看成是values
數(shù)組中只包含兩個元素的CAKeyframeAnimation
@property(nullable, copy) NSArray *values;
@property(nullable) CGPathRef path;
@property(nullable, copy) NSArray<NSNumber *> *keyTimes;
@property(nullable, copy) NSArray<CAMediaTimingFunction *> *timingFunctions;
-
CAAnimationGroup
:由多個基本動畫組成的動畫組我抠,設(shè)置其@property(nullable, copy) NSArray<CAAnimation *> *animations;
屬性來組合動畫 -
CATransition
:轉(zhuǎn)場動畫
CATransition
的屬性設(shè)置和說明
@property(copy) NSString *type; // 轉(zhuǎn)場類型
kCATransitionFade
kCATransitionMoveIn
kCATransitionPush
kCATransitionReveal
@property(nullable, copy) NSString *subtype; // 轉(zhuǎn)場方向
kCATransitionFromRight
kCATransitionFromLeft
kCATransitionFromTop
kCATransitionFromBottom
CATransition還可以用來給UIImageView,UILabel等實現(xiàn)轉(zhuǎn)場動畫袜茧,在他們改變圖片菜拓,文字,字體惫周,顏色的時候尘惧,非常實用
三、CAAnimation
的常用屬性
以下屬性是給
CAAnimation
設(shè)置動畫效果的
- 1.
duration
:動畫的持續(xù)時間 - 2.
repeatCount
:重復(fù)次數(shù)递递,無限循環(huán)可以設(shè)置HUGE_VALF或者MAXFLOAT - 3.
removedOnCompletion
:默認為YES喷橙,代表動畫執(zhí)行完畢后就從圖層上移除啥么,圖形會恢復(fù)到動畫執(zhí)行前的狀態(tài)。如果想讓圖層保持顯示動畫執(zhí)行后的狀態(tài)贰逾,那就設(shè)置為NO悬荣,不過還要設(shè)置fillMode
為kCAFillModeForwards
,但在實質(zhì)上疙剑,圖層的屬性值還是動畫執(zhí)行前的初始值氯迂,并沒有真正被改變。 - 4.
fillMode
:決定當(dāng)前對象在非active時間段的行為
kCAFillModeRemoved, // 這個是默認值言缤,也就是說當(dāng)動畫開始前和動畫結(jié)束后嚼蚀,動畫對layer都沒有影響,動畫結(jié)束后管挟,layer會恢復(fù)到之前的狀態(tài)
kCAFillModeForwards, // 當(dāng)動畫結(jié)束后轿曙,layer會一直保持著動畫最后的狀態(tài)
kCAFillModeBackwards // 在動畫開始前,只需要將動畫加入了一個layer僻孝,layer便立即進入動畫的初始狀態(tài)并等待動畫開始导帝。
kCAFillModeBoth // 這個其實就是上面兩個的合成.動畫加入后開始之前,layer便處于動畫初始狀態(tài)穿铆,動畫結(jié)束后layer保持動畫最后的狀態(tài) - 5.
timingFunction
:速度控制函數(shù)您单,控制動畫運行的節(jié)奏
kCAMediaTimingFunctionLinear(線性), // 勻速,給你一個相對靜態(tài)的感覺
kCAMediaTimingFunctionEaseIn(漸進), // 動畫緩慢進入荞雏,然后加速離開
kCAMediaTimingFunctionEaseOut(漸出) // 動畫全速進入虐秦,然后減速的到達目
kCAMediaTimingFunctionEaseInEaseOut(漸進漸出) // 動畫緩慢的進入,中間加速讯檐,然后減速的到達目的地羡疗。這個是默認的動畫行為染服。