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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java6.0中Comparable接口
- 下一篇: Calendar的获取变化日期