日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IOS学习动画二之 Core Animation (3)

發(fā)布時(shí)間:2025/5/22 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS学习动画二之 Core Animation (3) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

三、關(guān)鍵幀動(dòng)畫:CAKeyframeAnimation

(1)values屬性

values屬性指明整個(gè)動(dòng)畫過程中的關(guān)鍵幀點(diǎn)。

(2)path屬性

這是一個(gè) CGPathRef ?對象,默認(rèn)是空的,當(dāng)我們創(chuàng)建好CAKeyframeAnimation的實(shí)例的時(shí)候,可以通過制定一個(gè)自己定義的path來讓某一個(gè)物體按照這個(gè)路徑進(jìn)行動(dòng)畫。這個(gè)值默認(rèn)是nil,當(dāng)其被設(shè)定的時(shí)候,values這個(gè)屬性就被覆蓋 。

CGMutablePathRef?path?=?CGPathCreateMutable(); CGPathMoveToPoint(path,?NULL,?rectLayer.position.x?-?15,?rectLayer.position.y?-?15); CGPathAddLineToPoint(path,?NULL,?320?-?15,?rectLayer.frame.origin.y); CGPathAddLineToPoint(path,?NULL,?320?-?15,?rectLayer.frame.origin.y?+?100); CGPathAddLineToPoint(path,?NULL,?15,?rectLayer.frame.origin.y?+?100); CGPathAddLineToPoint(path,?NULL,?15,?rectLayer.frame.origin.y); rectRunAnimation.path?=?path; CGPathRelease(path);

(3)keyTimes屬性

該屬性是一個(gè)數(shù)組,用以指定每個(gè)子路徑(AB,BC,CD)的時(shí)間。如果你沒有顯式地對keyTimes進(jìn)行設(shè)置,則系統(tǒng)會(huì)默認(rèn)每條子路徑的時(shí)間為:ti=duration/(5-1),即每條子路徑的duration相等,都為duration的1\4。當(dāng)然,我們也可以傳個(gè)數(shù)組讓物體快慢結(jié)合。例如,你可以傳入{0.0, 0.1,0.6,0.7,1.0},其中首尾必須分別是0和1,因此tAB=0.1-0, tCB=0.6-0.1, tDC=0.7-0.6, tED=1-0.7.....

(4)timeFunctions屬性

用過UIKit層動(dòng)畫的同學(xué)應(yīng)該對這個(gè)屬性不陌生,這個(gè)屬性用以指定時(shí)間函數(shù),類似于運(yùn)動(dòng)的加速度,有以下幾種類型。上例子的AB段就是用了淡入淡出效果。記住,這是一個(gè)數(shù)組,你有幾個(gè)子路徑就應(yīng)該傳入幾個(gè)元素

?kCAMediaTimingFunctionLinear//線性kCAMediaTimingFunctionEaseIn//淡入kCAMediaTimingFunctionEaseOut//淡出kCAMediaTimingFunctionEaseInEaseOut//淡入淡出kCAMediaTimingFunctionDefault//默認(rèn)

(5)calculationMode屬性

該屬性決定了物體在每個(gè)子路徑下是跳著走還是勻速走,跟timeFunctions屬性有點(diǎn)類似

const kCAAnimationLinear//線性,默認(rèn)

const kCAAnimationDiscrete//離散無中間過程 keyTimes設(shè)置的時(shí)間仍生效 跳躍地出現(xiàn)在各個(gè)關(guān)鍵幀上

const kCAAnimationPaced//平均,keyTimes跟timeFunctions失效

const kCAAnimationCubic//平均,同上

const kCAAnimationCubicPaced//平均,同上

此外,動(dòng)畫的暫停與開始可以通過下面的方式做到:

-(void)pauseLayer:(CALayer*)layer?{CFTimeInterval?pausedTime?=?[layer?convertTime:CACurrentMediaTime()?fromLayer:nil];layer.speed?=?0.0;layer.timeOffset?=?pausedTime; }? -(void)resumeLayer:(CALayer*)layer?{CFTimeInterval?pausedTime?=?[layer?timeOffset];layer.speed?=?1.0;layer.timeOffset?=?0.0;layer.beginTime?=?0.0;CFTimeInterval?timeSincePause?=?[layer?convertTime:CACurrentMediaTime()?fromLayer:nil]?-?pausedTime;layer.beginTime?=?timeSincePause; }




轉(zhuǎn)載于:https://blog.51cto.com/5934497/1703455

總結(jié)

以上是生活随笔為你收集整理的IOS学习动画二之 Core Animation (3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。