UIColor no funciona con valores RGBA

Resuelto Stephen Fox asked hace 54 años • 6 respuestas

Estoy intentando cambiar el color del texto en UITextField usando el siguiente código (valor RGBA), sin embargo, simplemente aparece blanco o claro, no estoy muy seguro ya que el fondo es blanco.

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
Stephen Fox avatar Jan 01 '70 08:01 Stephen Fox
Aceptado

Los valores RGB para UIColor están entre 0 y 1 (consulte la documentación "especificado como un valor de 0,0 a 1,0")

Necesitas dividir tus números por 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))

Otra cosa, no necesitas crear CGFloats:

passwordTextField.textColor = UIColor(red:202.0/255.0, green:228.0/255.0, blue:230.0/255.0, alpha:1.0)
bjtitus avatar Jun 19 '2014 15:06 bjtitus

Usando el init de conveniencia (código como un profesional)

Paso 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) // 😍
Alwin Lazar avatar Oct 21 '2017 16:10 Alwin Lazar