Pregunta Cambio del color del marcador de posición UITextField


Cómo cambiar dinámicamente el color de marcador de posición del UITextField? Este es siempre el mismo color del sistema.

Ninguna opción en el editor xib.


73
2018-01-12 12:07


origen


Respuestas:


De Docs

@property (nonatomic, copy) NSAttributedString * attribuPlaceholder

Esta propiedad es nula por defecto. Si se establece, la cadena de marcador de posición es   dibujado usando un 70% de color gris y la información de estilo restante   (excepto el color del texto) de la cadena atribuida. Asignando un nuevo   el valor de esta propiedad también reemplaza el valor del marcador de posición   propiedad con la misma cadena de datos, aunque sin ningún formato   información. Asignar un nuevo valor a esta propiedad no afecta   cualquier otra propiedad relacionada con el estilo del campo de texto.

C objetivo

NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"Some Text" attributes:@{ NSForegroundColorAttributeName : [UIColor redColor] }];
self.myTextField.attributedPlaceholder = str;

Rápido

let str = NSAttributedString(string: "Text", attributes: [NSForegroundColorAttributeName:UIColor.redColor()])
myTextField.attributedPlaceholder = str

161
2018-01-12 12:45



Easy and perfect solution.

_placeholderLabel.textColor

En veloz

myTextField.attributedPlaceholder = 
NSAttributedString(string: "placeholder", attributes:[NSForegroundColorAttributeName : UIColor.redColor()])

C objetivo

UIColor *color = [UIColor grayColor];
nameText.attributedPlaceholder =
   [[NSAttributedString alloc]
   initWithString:@"Full Name"
   attributes:@{NSForegroundColorAttributeName:color}];

P.S Copié 3 respuestas diferentes de Stackoverflow.


41
2018-04-29 21:35



Use el código a continuación

[YourtextField setValue:[UIColor colorWithRed:97.0/255.0 green:1.0/255.0 blue:17.0/255.0 alpha:1.0] forKeyPath:@"_placeholderLabel.textColor"];

12
2018-01-13 04:39



Primero agregue esta extensión

extension UITextField{
    @IBInspectable var placeHolderTextColor: UIColor? {
        set {
            let placeholderText = self.placeholder != nil ? self.placeholder! : ""
            attributedPlaceholder = NSAttributedString(string:placeholderText, attributes:[NSForegroundColorAttributeName: newValue!])
        }
        get{
            return self.placeHolderTextColor
        }
    }
}

Luego puede cambiar el color del marcador de posición mediante el guión gráfico o simplemente configurándolo así:

textfield.placeHolderTextColor = UIColor.red

5
2018-01-18 09:35



Yo uso esto en SWIFT:

myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder", attributes: [NSForegroundColorAttributeName : UIColor.redColor()])

Parece que esto funciona para otros ... No tengo idea de por qué no me ha funcionado antes ... tal vez algunos ajustes de proyectos. Gracias por los comentarios. Actualmente no tengo forma de cómo volver a probarlo.

Obsoleto: Pero no sé por qué, el texto se aplica correctamente, pero el color del marcador permanece igual (negro / gris).

--iOS8


3
2018-01-06 11:37



Prueba esto:

NSAttributedString *strUser = [[NSAttributedString alloc] initWithString:@"Username" attributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor] }];
NSAttributedString *strPassword = [[NSAttributedString alloc] initWithString:@"Password" attributes:@{ NSForegroundColorAttributeName : [UIColor whiteColor] }];

self.username.attributedPlaceholder = strUser;
self.password.attributedPlaceholder = strPassword;

2
2018-04-10 13:54



Puedes usar el siguiente código

[txtUsername setValue:[UIColor darkGrayColor] forKeyPath:@"_placeholderLabel.textColor"];

1
2018-04-20 11:45



Esta solución funciona sin subclassing y sin ivars privados:

@IBOutlet weak var emailTextField: UITextField! {
    didSet {
        if emailTextField != nil {
            let placeholderText = NSLocalizedString("Tap here to enter", comment: "Tap here to enter")
            let placeholderString = NSAttributedString(string: placeholderText, attributes: [NSForegroundColorAttributeName: UIColor(white: 0.66, alpha: 1.0)])
            emailTextField.attributedPlaceholder = placeholderString
        }
    }
}

1
2017-08-26 19:39



Prueba esto.

UIColor *color = [UIColor redColor];
self.txtUsername.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Your Placeholder Text" attributes:@{NSForegroundColorAttributeName:color}];

1
2018-03-26 10:28