2016-06-03 18 views
6

Mam dwa pola wejściowe w moim widoku, loginEmailInput i loginPasswordInput.Błąd Swift: Nie można przypisać wartości typu UIColor do typu CGColor

Próbuję zmienić kolor ramki. Mój kod w ViewController.swift wygląda tak:

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.... 

Jednak obie te linie pokazują błąd:

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

błędu jest:

Can't assign value of type UIColor to type CGColor

Jak mogę rozwiązać ten problem?

+5

'layer.borderColor = borderColor.CGColor'? Nie potrzebujesz również adnotacji typu "opis" na twoim 'UIColor'. Co ważniejsze, te dwie linie ustawiające kolor granicy muszą być metodą, a nie tylko unoszącą się w klasie. – Hamish

Odpowiedz

32

Na CALayer użytkowania

UIColor.blueColor().CGColor (example) 

Ogólnie, warstwy/CALayers stosowania CG (rdzeń graficzne) barwniki. Podczas gdy dla czegoś w tle widoku możesz użyć czegoś takiego jak view.backgroundColor = UIColor.blueColor(). UIColor jest częścią UIKit ramowego (NSObject), CG jest częścią rdzenia graficznego (CF/Rdzeń Foundation Library)

dla warstwy, robisz

UIColor.blueColor().CGColor 

Dla Swift 3:

UIColor.blue.cgColor 
+1

Kilka wykałaczek - to bardziej powszechna "grafika rdzenia", a "CF" jest właściwie przedrostkiem dla klas z biblioteki Core _Foundation_. –

+0

@CraigOtis absolutnie, zaktualizowałem swoją odpowiedź, pozwól mi teraz, jeśli masz więcej sugestii –

+9

Swift 3: UIColor.black.cgColor – Franck

Powiązane problemy