Delegate是iOS中一種經常使用的模式,在動畫中也是同樣,咱們能夠經過Delegate實現對動畫完成過程當中開始、結束時動做的控制
以下是動畫的兩個代理方法編程
func animationDidStart(anim: CAAnimation) func animationDidStop(anim: CAAnimation, finished flag: Bool)
使用方法也很簡單,只需設置代理便可swift
flyRight.delegate = self
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