2015-09-14 3 views
1

В настоящее время у меня есть подкласса CALayer для создания анимируемой нижней границы моего UITextField. Однако моя функция animateColor не работает. Я тестировал, будет ли функция вызываться, и это так. Однако анимация не происходит. Что я делаю не так?Функция анимации подкласса CALayer не анимируется

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") 
} 

} 

ответ

1

Вам нужно определить свойство, которое должно быть анимированным, установив keyPath.

colorAnimation.keyPath = "backgroundColor" 

key аргумент addAnimation используется просто в качестве идентификатора для анимации.

+0

Исправить. Я изменил его непосредственно в объявлении 'colorAnimation' на' var colorAnimation = CABasicAnimation (keyPath: "backgroundColor") ', чтобы уменьшить многословие. Благодарю. – iamktothed

Смежные вопросы