日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/5/22 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IOS学习动画二之 Core Animation (3) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

三、關鍵幀動畫:CAKeyframeAnimation

(1)values屬性

values屬性指明整個動畫過程中的關鍵幀點。

(2)path屬性

這是一個 CGPathRef ?對象,默認是空的,當我們創建好CAKeyframeAnimation的實例的時候,可以通過制定一個自己定義的path來讓某一個物體按照這個路徑進行動畫。這個值默認是nil,當其被設定的時候,values這個屬性就被覆蓋 。

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屬性

該屬性是一個數組,用以指定每個子路徑(AB,BC,CD)的時間。如果你沒有顯式地對keyTimes進行設置,則系統會默認每條子路徑的時間為:ti=duration/(5-1),即每條子路徑的duration相等,都為duration的1\4。當然,我們也可以傳個數組讓物體快慢結合。例如,你可以傳入{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層動畫的同學應該對這個屬性不陌生,這個屬性用以指定時間函數,類似于運動的加速度,有以下幾種類型。上例子的AB段就是用了淡入淡出效果。記住,這是一個數組,你有幾個子路徑就應該傳入幾個元素

?kCAMediaTimingFunctionLinear//線性kCAMediaTimingFunctionEaseIn//淡入kCAMediaTimingFunctionEaseOut//淡出kCAMediaTimingFunctionEaseInEaseOut//淡入淡出kCAMediaTimingFunctionDefault//默認

(5)calculationMode屬性

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

const kCAAnimationLinear//線性,默認

const kCAAnimationDiscrete//離散無中間過程 keyTimes設置的時間仍生效 跳躍地出現在各個關鍵幀上

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

const kCAAnimationCubic//平均,同上

const kCAAnimationCubicPaced//平均,同上

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

-(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; }




轉載于:https://blog.51cto.com/5934497/1703455

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。