iOS动画编程-Layer动画[ 4 ] Animation Keys and Delegates

本文介绍了iOS中动画的实现方式及Delegate模式的应用,包括动画开始和结束时的动作控制方法,并展示了如何利用KVC来简化动画配置。

Delegate

Delegate是iOS中一种常用的模式,在动画中也是一样,我们可以通过Delegate实现对动画完成过程中开始、结束时动作的控制
如下是动画的两个代理方法

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

使用方法也很简单,只需设置代理即可

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?类型,需要自行转换为希望的类型

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可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值