2016-06-03 19 views
6

Ho due campi di input nella mia vista, loginEmailInput e loginPasswordInput.Errore Swift: impossibile assegnare il valore di tipo UIColor al tipo CGColor

Sto provando a cambiare il colore del bordo. Il mio codice in ViewController.swift assomiglia così:

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var loginPasswordInput: UITextField! 
    @IBOutlet weak var loginEmailInput: UITextField! 

    let borderColor : UIColor = UIColor(red:0.39, green:0.76, blue:0.37, alpha:1) 
    loginEmailInput.layer.borderColor = borderColor 
    loginPasswordInput.layer.borderColor = borderColor 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     //etc.... 

Tuttavia, entrambe queste linee mostrano un errore:

loginEmailInput.layer.borderColor = borderColor 
loginPasswordInput.layer.borderColor = borderColor 

L'errore è:

Can't assign value of type UIColor to type CGColor

Come posso risolvere questo problema?

+5

'layer.borderColor = borderColor.CGColor'? Inoltre non hai bisogno dell'annotazione del tipo esplicito su 'UIColor'. Anche se più importante, quelle due linee che impostano il colore del bordo devono essere in un metodo, non solo fluttuanti nella classe. – Hamish

risposta

32

Per CALayer Usa

UIColor.blueColor().CGColor (example) 

In generale, strati/CALayers uso (Core Graphic) colori CG. Mentre per qualcosa come lo sfondo della vista, puoi usare qualcosa come view.backgroundColor = UIColor.blueColor(). UIColor fa parte di UIKit FrameWork (NSObject), CG è parte del core grafico (CF/Nucleo Foundation Library)

Per un livello, si fa

UIColor.blueColor().CGColor 

Per Swift 3:

UIColor.blue.cgColor 
+1

Alcuni nitpicks - è più comunemente plurale "Core Graphics", e "CF" è in realtà il prefisso per le classi dalla libreria Core _Foundation_. –

+0

@CraigOtis assolutamente, ho aggiornato la mia risposta, lasciami ora se hai altri suggerimenti –

+9

Swift 3: UIColor.black.cgColor – Franck

Problemi correlati