2015-03-09 2 views
5

По какой-то причине это не работает для меня:Как анимировать изменение BorderColor в быстрой

let color = CABasicAnimation(keyPath: "borderColor") 
color.fromValue = sender.layer.borderColor; 
color.toValue = UIColor.redColor().CGColor; 
color.duration = 2; 
color.repeatCount = 1; 
sender.layer.addAnimation(color, forKey: "color and width"); 

Я не получаю какой-либо анимации происходит.

+0

Какой результат дает этот код? – roo2

+0

Что не работает? Включите сообщение об ошибке и ожидаемый результат в редактирование вашего вопроса (не комментируйте комментарии и не добавляйте ** Редактировать ** или ** Обновить ** в своей разработке, мы можем видеть, что изменилось с редактирования история). – Anthon

ответ

1

Я не знаю, почему, но по какой-то причине вопиющего

color.fromValue = sender.layer.borderColor 

не работает. Цвет не читается правильно или что-то в этом роде. Я изменил его на:

let color = CABasicAnimation(keyPath: "borderColor"); 
color.fromValue = UIColor.greenColor().CGColor; 
color.toValue = UIColor.redColor().CGColor; 
color.duration = 2; 
color.repeatCount = 1; 
sender.layer.addAnimation(color, forKey: "color and width"); 

И тогда все пришло в действие, как ожидалось.

6

Вы должны использовать одно и то же имя ключа. Вы также забыли добавить ширину и цвет границы на ваш слой перед его анимацией. Попробуйте так:

let color = CABasicAnimation(keyPath: "borderColor") 

@IBAction func animateBorder(sender: AnyObject) { 
    color.fromValue = UIColor.greenColor().CGColor 
    color.toValue = UIColor.redColor().CGColor 
    color.duration = 2 
    color.repeatCount = 1 
    sender.layer.borderWidth = 2 
    sender.layer.borderColor = UIColor.greenColor().CGColor 
    sender.layer.addAnimation(color, forKey: "borderColor") 
} 
+0

После игры с ним еще немного. Я думаю, что проблема в том, что из цвета. Он не читает sender.layer.borderColor. –

+0

color.fromValue = sender.layer.borderColor также работает для меня здесь –

+0

Проблема заключалась в ключевом имени для Key: «color and width». Если вы хотите одушевить цвет и границу, вам нужно создать один CABasicAnimation для каждого свойства (borderColor и borderWidth) –

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