iOS動畫編程-Layer動畫[ 4 ] Animation Keys and Delegates

Delegate

Delegate是iOS中一種經常使用的模式,在動畫中也是同樣,咱們能夠經過Delegate實現對動畫完成過程當中開始、結束時動做的控制
以下是動畫的兩個代理方法編程

func animationDidStart(anim: CAAnimation)
func animationDidStop(anim: CAAnimation, finished flag: Bool)

使用方法也很簡單,只需設置代理便可swift

flyRight.delegate = self

動畫中KVC的應用

CAAnimation類支持KVC編程,這意味着咱們能夠將他們做爲Dictionary對待動畫

flyRight.setValue(username.layer, forKey: "layer")

經過這行代碼,咱們能夠讓CAAnimation簡單的Model帶上其做用的Layer
因爲咱們設置了Key,咱們就能夠在delegate中由此判斷傳入的是哪個CAAnimation對象代理

if let name = anim.valueForKey("name") as? String { if name == "form" {
//form field found
} }

返回的是AnyObject?類型,須要自行轉換爲但願的類型code

let layer = anim.valueForKey("layer") as? CALayer anim.setValue(nil, forKey: "layer")
let pulse = CABasicAnimation(keyPath: "transform.scale") pulse.fromValue = 1.25
pulse.toValue = 1.0
pulse.duration = 0.25
layer?.addAnimation(pulse, forKey: nil)

將layer屬性的值設爲nil能夠orm

相關文章
相關標籤/搜索