2015-03-09 11 views
5

Per qualche motivo questo non funziona per me:come animare il cambiamento borderColor in rapida

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

Non ricevo alcuna animazione a verificarsi.

+0

quale risultato fornisce questo codice? – roo2

+0

Che cosa non funziona? Includi il messaggio di errore e il risultato atteso in una modifica della tua domanda (non commentare i commenti e non includere ** Modifica ** o ** Aggiornamento ** nella tua elaborazione, possiamo vedere cosa è cambiato dalla modifica storia). – Anthon

risposta

1

Non so perché, ma per qualche motivo di chiamata:

color.fromValue = sender.layer.borderColor 

non funziona. Il colore non viene letto correttamente o qualcosa del genere. L'ho modificato in:

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

E poi le cose hanno iniziato a funzionare come previsto.

6

È necessario utilizzare lo stesso nome chiave. Hai anche dimenticato di aggiungere una larghezza e un colore al tuo livello prima di animarlo. Provate così:

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

Dopo aver giocato ancora con esso. Penso che il problema sia il fromColor. Non sta leggendo sender.layer.borderColor. –

+0

color.fromValue = sender.layer.borderColor funziona anche per me qui –

+0

Il problema era il nome chiave forKey: "color and width". Se si desidera animare il colore e il bordo, è necessario creare una CABasicAnimation per ogni proprietà (borderColor e borderWidth) –

Problemi correlati