2014-07-15 20 views
30

Sto provando a impostare uno UITextField di borderColor in iOS 8 in Swift. Ho provato ad utilizzare questo codice:Come si imposta borderColor di UITextField?

myTextField.layer.borderColor = UIColor(red: 0.5, green: 0.5, blue:0, alpha: 1.0) 

ho ottenuto questo errore:

UIColor not convertible to CGColor

risposta

11

Prova questa:

myTextField.layer.borderColor = [UIColor blackColor].CGColor; 

myTextField.layer.borderColor = (UIColor(red: 0.5, green: 0.5, blue:0, alpha: 1.0)).CGColor; 
+0

Thnaks per la risposta. L'ho provato e ricevo l'errore "dichiarazione prevista". Scusa se sono nuovo alla programmazione iOS. –

38

@coderRed ti ha dato una risposta C Obiettivo e una risposta Swift. Ignorare la sua prima linea

ho rotto in 2 dichiarazioni di seguito a Swift:

let myColor : UIColor = UIColor(red: 0.5, green: 0.5, blue:0, alpha: 1.0) 
myTextField.layer.borderColor = myColor.CGColor 

Spero che questo aiuti! Buona fortuna con l'apprendimento di Swift

+0

non funziona per me –

+0

cosa dice? –

+0

Non funziona per me. –

3

Il problema con questo è di convertire un UIColor in un CGColor, che è spiegato nelle risposte precedenti, ma in parole povere, tutto quello che devi fare per fare questa conversione è aggiungere .CGColor alla fine del tuo UIColor. cioè

myTextField.layer.borderColor = UIColor(red: CGFloat, green: CGFloat, blue:CGFLoat, alpha: CGFloat).CGColor 
30

Si può provare questo, per me funziona

myTextField.layer.cornerRadius = 8.0 
myTextField.layer.masksToBounds = true 
myTextField.layer.borderColor = UIColor(red: 153/255, green: 153/255, blue:0/255, alpha: 1.0).CGColor 
myTextField.layer.borderWidth = 2.0 
+1

Mi piace molto l'uso del 153/255, rende i valori RGB molto chiari, piuttosto che i valori decimali. +1 – UberJames

6

Credo che è necessario impostare il borderWidth

myTextField.layer.borderWidth = 10 
3
myTextField.layer.borderColor = UIColor.darkGrayColor().CGColor 
2

tuo codice:

myTextField.layer.borderColor = [UIColor blackColor].CGColor; 
myTextField.layer.borderColor = (UIColor(red: 0.5, green: 0.5, blue:0, alpha: 1.0)).CGColor; 

Quello che faccio in rapida e ciò che funziona sempre:

myTextField.layer.borderColor = UIColor.blackColor().CGColor; 
myTextField.layer.borderColor = UIColor(red: 0.5, green: 0.5, blue:0, alpha: 1.0).CGColor; 

Spero che questo aiuti :)

2

Si potrebbe anche voler aggiungere linea come:

myTextField.layer.borderWidth = CGFloat(1.0) 

alle risposte precedenti.

Nel mio caso, il cambiamento di colore non era visibile finché non ho inserito questa linea.

6

Ho trovato che il modo più semplice per impostare il colore del bordo utilizzando Swift 3 è quello di fare

myTextField.layer.borderColor = UIColor.gray.cgColor 

o

myTextView.layer.borderColor = UIColor.gray.cgColor 

Spero che questo funziona! Buona fortuna.

0

Prova questo,

extension UITextField{ 
    func setBorderColor(width:CGFloat,color:UIColor) -> Void{ 
     self.layer.borderColor = color.cgColor 
     self.layer.borderWidth = width 
    } 
} 

e implementare questa funzione dove si vuole,

textField.setBorderColor(width: 2.0, color: UIColor.brown) 

Spero che questo aiuto!

0

Hai provato

myTextField.layer.borderColor = UIColor(red: 0.5, green: 0.5, blue:0, alpha: 1.0).cgColor?

È anche possibile eseguire il cast del colore as! CGColor ma è preferibile utilizzare lo .cgColor alla fine.