2014-06-19 12 views
12

Sto provando a cambiare il colore del testo in un UITextField usando il seguente codice (valore RGBA), tuttavia appare solo bianco, o chiaro, non sono sicuro che lo sfondo sia bianco.UIColor non funziona con i valori RGBA

passwordTextField.textColor = UIColor(red: CGFloat(202.0), green: CGFloat(228.0), blue: CGFloat(230.0), alpha: CGFloat(100.0)) 

passwordTextField.returnKeyType = UIReturnKeyType.Done 
passwordTextField.placeholder = "Password" 
passwordTextField.backgroundColor = UIColor.clearColor() 
passwordTextField.borderStyle = UITextBorderStyle.RoundedRect 
passwordTextField.font = UIFont(name: "Avenir Next", size: 14) 
passwordTextField.textAlignment = NSTextAlignment.Center 
passwordTextField.secureTextEntry = true 
+0

'202.0/255.0',' 228.0/255.0', '230.0/255.0', ect ... i valori dovrebbero essere tra' 0.0' e '1.0' ... – holex

risposta

41

valori RGB per UIColor sono compresi tra 0 e 1 (vedi the documentation "specificati come un valore da 0,0 a 1,0")

È necessario dividere i numeri 255:

passwordTextField.textColor = UIColor(red: CGFloat(202.0/255.0), green: CGFloat(228.0/255.0), blue: CGFloat(230.0/255.0), alpha: CGFloat(1.0)) 

Un'altra cosa, non è necessario creare CGFloats:

passwordTextField.textColor = UIColor(red:202.0/255.0, green:228.0/255.0, blue:230.0/255.0, alpha:1.0) 
+0

Due anni dopo questo è ancora il unico modo! Sorprendentemente raramente menzionato altrove! –

2

rosso, verde, blu e alfa devono essere compresi tra 0.0 e 1.0.

3

Prova a modificare:

passwordTextField.textColor = UIColor(red: 0.792, green: 0.894, blue: 0.901, alpha: 1.0 

Inserire sempre valori sostitutivi. 202/255 = 0,792

1

Come già menzionato, i componenti UIColor sono normalizzati nell'intervallo 0.0 ~ 1.0 (penso che le gamme di colori larghi siano l'eccezione, ma non l'abbiamo ancora fatto ricerche).

Un conveninet estensione alla classe UIColor vi permetterà di utilizzare i valori nel range 0 ~ 255 (come quelli ottenuti da vari ispettori e strumenti di editing di immagini):

import UIKit 

extension UIColor { 

    convenience init(
     redByte red:UInt8, 
     greenByte green:UInt8, 
     blueByte blue:UInt8, 
     alphaByte alpha:UInt8 
     ) { 
     self.init(
      red: CGFloat(red )/255.0, 
      green: CGFloat(green)/255.0, 
      blue: CGFloat(blue)/255.0, 
      alpha: CGFloat(alpha)/255.0 
     ) 
    } 
} 
1

Utilizzando convenienza init (codice come un professionista)

Fase 1

extension UIColor { 
    convenience init(r: CGFloat, g: CGFloat, b: CGFloat) { 
     self.init(red: r/255, green: g/255, blue: b/255, alpha: 1) 
    } 
} 

Uso

//let color = UIColor(red: 202/255, green: 228/255, blue: 230/255, alpha: 1) ☠️ 
let color = UIColor(r: 202, g: 228, b: 230) // 
+0

Solo 1 passo? : P –

Problemi correlati