子类 CALayer 动画函数不动画
Subclassed CALayer animation function does not animate
目前,我已将 CALayer 子类化,以便为我的 UITextField 创建可动画的底部边框。但是,我的 animateColor
函数不起作用。我已经测试过是否正在调用该函数。但是,没有动画发生。我做错了什么?
class KTextFieldBottomBorder:CALayer {
override init!() {
super.init()
commonInit()
}
override init!(layer: AnyObject!) {
super.init(layer: layer)
commonInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func commonInit() {
// Appearance
self.backgroundColor = UIColor.lightGrayColor().CGColor
}
// MARK: Animations
func animateColor (endingColor:UIColor, duration:CFTimeInterval) {
var colorAnimation = CABasicAnimation(keyPath: "color")
colorAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
colorAnimation.toValue = endingColor.CGColor
colorAnimation.duration = duration
colorAnimation.fillMode = kCAFillModeForwards
super.addAnimation(colorAnimation, forKey: "color")
println("X")
}
}
您需要通过设置 keyPath
.
来定义应动画化的 属性
colorAnimation.keyPath = "backgroundColor"
addAnimation
的 key
参数仅用作动画的标识符。
目前,我已将 CALayer 子类化,以便为我的 UITextField 创建可动画的底部边框。但是,我的 animateColor
函数不起作用。我已经测试过是否正在调用该函数。但是,没有动画发生。我做错了什么?
class KTextFieldBottomBorder:CALayer {
override init!() {
super.init()
commonInit()
}
override init!(layer: AnyObject!) {
super.init(layer: layer)
commonInit()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
func commonInit() {
// Appearance
self.backgroundColor = UIColor.lightGrayColor().CGColor
}
// MARK: Animations
func animateColor (endingColor:UIColor, duration:CFTimeInterval) {
var colorAnimation = CABasicAnimation(keyPath: "color")
colorAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
colorAnimation.toValue = endingColor.CGColor
colorAnimation.duration = duration
colorAnimation.fillMode = kCAFillModeForwards
super.addAnimation(colorAnimation, forKey: "color")
println("X")
}
}
您需要通过设置 keyPath
.
colorAnimation.keyPath = "backgroundColor"
addAnimation
的 key
参数仅用作动画的标识符。