天天看點

iOS開發UI篇—核心動畫(關鍵幀動畫)

一、簡單介紹

是capropertyanimation的子類,跟cabasicanimation的差別是:cabasicanimation隻能從一個數值(fromvalue)變到另一個數值(tovalue),而cakeyframeanimation會使用一個nsarray儲存這些數值

屬性解析:

values:就是上述的nsarray對象。裡面的元素稱為”關鍵幀”(keyframe)。動畫對象會在指定的時間(duration)内,依次顯示values數組中的每一個關鍵幀

path:可以設定一個cgpathref\cgmutablepathref,讓層跟着路徑移動。path隻對calayer的anchorpoint和position起作用。如果你設定了path,那麼values将被忽略

keytimes:可以為對應的關鍵幀指定對應的時間點,其取值範圍為0到1.0,keytimes中的每一個時間值都對應values中的每一幀.當keytimes沒有設定的時候,各個關鍵幀的時間是平分的

說明:cabasicanimation可看做是最多隻有2個關鍵幀的cakeyframeanimation

二、代碼示例

第一種方式:

代碼:

iOS開發UI篇—核心動畫(關鍵幀動畫)
iOS開發UI篇—核心動畫(關鍵幀動畫)

說明:這個項目在storyboard中拖入了一個view,并和控制器中的custom進行了關聯。

效果和列印結果:

iOS開發UI篇—核心動畫(關鍵幀動畫)

補充:設定動畫的節奏

iOS開發UI篇—核心動畫(關鍵幀動畫)

第二種方式(使用path)讓layer在指定的路徑上移動(畫圓):

iOS開發UI篇—核心動畫(關鍵幀動畫)
iOS開發UI篇—核心動畫(關鍵幀動畫)

說明:可以通過path屬性,讓layer在指定的軌迹上運動。

停止動畫:

iOS開發UI篇—核心動畫(關鍵幀動畫)
iOS開發UI篇—核心動畫(關鍵幀動畫)
iOS開發UI篇—核心動畫(關鍵幀動畫)

點選停止動畫,程式内部會調用 [self.customview.layer removeanimationforkey:@"wendingding"];停止self.customview.layer上名稱标示為wendingding的動畫。

三、圖示抖動

代碼示例:

iOS開發UI篇—核心動畫(關鍵幀動畫)
iOS開發UI篇—核心動畫(關鍵幀動畫)

說明:圖示向左向右偏轉一個弧度(4),産生抖動的視覺效果。

程式界面:

iOS開發UI篇—核心動畫(關鍵幀動畫)

繼續閱讀