1势腮、CAAnimation是IOS QuartzCore框架下一個抽象類周蹭,遵循了CAMediaTiming協(xié)議和CAAction協(xié)議显拜!我們不直接使用CAAnimation類奄妨,而是使用其子類:
CATransition:提供漸變效果烙如,如推拉push效果,消退fade效果,揭開reveal效果
CAAnimationGroup:允許多個動畫同時播放
CABasicAnimation: 提供了對單一動畫的實現(xiàn)
CAKeyframeAnimation: 關(guān)鍵楨動畫,可以定義動畫路線
CAPropertyAnimation:屬性動畫么抗,通常不直接使用,而是使用CABasicAnimation子類
從上面可以看出CABasicAnimation與CAKeyframeAnimation都繼承于CAPropertyAnimation亚铁。而CAPropertyAnimation提供了基本的動畫屬性設(shè)置keyPath蝇刀、additive、cumulative
2徘溢、詳解
1)CABasicAnimation
CABasicAnimation提供了最基礎(chǔ)的動畫屬性設(shè)置吞琐,是簡單的keyframe動畫性能捆探。CABasicAnimation可以看做是一種CAKeyframeAnimation的簡單動畫,因為它只有頭尾的關(guān)鍵幀(keyframe)站粟。
我們可以創(chuàng)建一個CABasicAnimaiton的對象通過keyPath的方式黍图。CABasicAnimation提供了fromValue、toValue奴烙、byValue的設(shè)置(插值)助被。它們?nèi)齻€屬性定義了一個動畫的軌跡,并且最少兩個值不能為空切诀。通常創(chuàng)建CABasicAnimation對象用 如下方法
+ (instancetype)animationWithKeyPath:(nullable NSString *)path;
其中path的值相當于我們設(shè)定了這是個什么類型的動畫揩环,如下表格列出了常用屬性:
當設(shè)置了CABasicAnimation的起點與終點值后,中間的值都是通過插值方式計算出來的幅虑,插值計算是通過timingFunction來指定丰滑,timingFunction默認為空,使用liner(勻速運動)翘单。例如吨枉,當我們設(shè)置了一個position的動畫蹦渣,設(shè)置了開始值PointA與結(jié)束值PointB哄芜,它們的運動先計算PointA與PointB的中間運動值PointCenter,而PointCenter是由timingFunction來指定值的柬唯,并且動畫默認是直線勻速運動的认臊。
2)CAKeyFrameAnimation
CAKeyframeAnimation提供了通用的keyframe動畫功能層的屬性給我們使用,它允許我們設(shè)置一個特定的數(shù)組锄奢,這個數(shù)組是動畫在運動時的值失晴。也就是說,CAKeyframeAnimation支持動畫的多個值設(shè)置拘央。
CAKeyFrameAnimation可以用兩種方法定義:CGPath涂屁、數(shù)組values。
CGPath只對layer的anchorPoint或position屬性起作用灰伟。values比較靈活拆又。keyTimes是一個可選參數(shù),它可以定
義keyframe的每個部分栏账,其值是0.0到1.0帖族。keyTimes數(shù)組中的每個時間值都對應values中的每一幀,當keyTimes沒有設(shè)置的
時候挡爵,各個keyframe的時間是平分的竖般。keyTimes數(shù)組中的每個元素定義了相應的keyframe的持續(xù)時間值作為動畫的總持續(xù)時間的一小部
分,每個元素的值必須大于茶鹃、或等于前一個值涣雕。
3.區(qū)別于聯(lián)系
1)CABasicAnimation可看做是最多只有2個關(guān)鍵幀的CAKeyframeAnimation
4艰亮、案例制作
如下案例將幾種常用動畫做了封裝,如:閃爍效果挣郭、橫縱向移動垃杖、縮放效果、路徑動畫丈屹、旋轉(zhuǎn)動畫调俘、組合動畫,其中組合動畫就是將其它效果動畫集成在一起旺垒。
3彩库、CADisplayLink
CADisplayLink是一個能讓我們以和屏幕刷新率相同的頻率將內(nèi)容畫到屏幕上的定時器。我們在應用中創(chuàng)建一個新的CADisplayLink對象先蒋,把它添加到一個runloop中骇钦,并給它提供一個target和selector在屏幕刷新的時候調(diào)用。
CADisplayLink配合簡單的動畫效果竞漾,可以做出較為魔性的動畫::::::
4眯搭、簡單時鐘動畫效果
之前一直想做,但都不知道從何下手业岁,直到我看到了別人的代碼鳞仙。。笔时。
然后優(yōu)化了一點點棍好,分針能隨著秒針變化而變化,時針隨著分針變化而變化