天天看點

iOS:CALayer的隐式動畫的詳解

CALayer的隐式動畫屬性:

•每一個UIView内部都預設關聯着一個CALayer,稱這個Layer為Root Layer。所有的非Root Layer都存在着隐式動畫,隐式動畫的預設時長為1/4秒。

•當修改非Root Layer的部分屬性時,相應的修改會自動産生動畫效果,能執行隐式動畫的屬性被稱為“可動畫屬性”,諸如:

1.bounds: 縮放動畫

2.position: 平移動畫

3.opacity: 淡入淡出動畫(改變透明度)

•在文檔中搜素animatable可以找到所有可動畫屬性

•如果要關閉預設的動畫效果,可以通過動畫事務方法實作:

[CATransaction begin];

[CATransaction setDisableActions:YES];

// ...一些其他的代碼<#code#>

[CATransaction commit];

具體的示範執行個體如下:隻需要在控制器ViewController類中寫代碼即可.......

操作目的:當我們觸摸螢幕時,子層會動畫跑到點選的位置停留下來,同時動畫的過程中,它的透明度和形變也可以發生改變。

操作步驟:

1.建立子層,設定屬性,然後添加到根層

iOS:CALayer的隐式動畫的詳解
iOS:CALayer的隐式動畫的詳解

2.重寫-(void)touchBegan:(NSSet*)touches withEvent:(UIEvent *)event方法,進行觸摸事件的處理,動畫過程中處理的代碼如下:

  //取出目前點

  //開始動畫事物([CATransaction setDisableActions:YES]關閉隐式動畫後,子層直接跳到了觸擊位置,沒有了移動動畫流程)

  //設定動畫持續時間為1秒

 //設定子層的動畫後的位置

iOS:CALayer的隐式動畫的詳解
iOS:CALayer的隐式動畫的詳解

 //設定子層透明度的變化值,透明度由1.0變成了0.5

 //設定子層變形,以x為旋轉軸旋轉45度

 //送出動畫事物

3.示範結果如下:

沒有任何觸發時的截圖:                                         在螢幕右下角點選一下,子層慢慢移動了此位置,并且透明度慢慢變淺,形變産生

iOS:CALayer的隐式動畫的詳解
iOS:CALayer的隐式動畫的詳解

程式猿神奇的手,每時每刻,這雙手都在改變着世界的互動方式!

本文轉自當天真遇到現實部落格園部落格,原文連結:http://www.cnblogs.com/XYQ-208910/p/4882960.html,如需轉載請自行聯系原作者

繼續閱讀