ios uitextfield

ios - Cambio del color del marcador de posición UITextField



uitextfielddelegate (13)

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

Ninguna opción en el editor xib.


Esta es una versión mejorada de la extensión provista por @Medin Piranej arriba (¡buena idea, por cierto!). Esta versión evita un ciclo interminable si intenta obtener placeHolderTextColor y evita bloqueos si el conjunto de colores es nulo.

public extension UITextField { @IBInspectable public var placeholderColor: UIColor? { get { if let attributedPlaceholder = attributedPlaceholder, attributedPlaceholder.length > 0 { var attributes = attributedPlaceholder.attributes(at: 0, longestEffectiveRange: nil, in: NSRange(location: 0, length: attributedPlaceholder.length)) return attributes[NSForegroundColorAttributeName] as? UIColor } return nil } set { if let placeholderColor = newValue { attributedPlaceholder = NSAttributedString(string: placeholder ?? "", attributes:[NSForegroundColorAttributeName: placeholderColor]) } else { // The placeholder string is drawn using a system-defined color. attributedPlaceholder = NSAttributedString(string: placeholder ?? "") } } }

}


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


La respuesta de @ DogCoffee en Swift sería

let placeholderAttrs = [ NSForegroundColorAttributeName : UIColor.redColor()] let placeholder = NSAttributedString(string: "Some text", attributes: placeholderAttrs) textField.attributedPlaceholder = placeholder


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


Prueba esto.

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


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;


Puedes usar el siguiente código

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


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"];


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


para swift 3, podemos usar este código para cambiar el color del marcador de posición para UITextfield

let placeholderColor = UIColor.red mytextField.attributedPlaceholder = NSAttributedString(string: mytextField.placeholder, attributes: [NSForegroundColorAttributeName : placeholderColor])


De Docs

@property (nonatomic, copy) NSAttributedString * attribuPlaceholder

Esta propiedad es nula por defecto. Si se establece, la cadena del marcador de posición se dibuja utilizando un color gris del 70% y la información de estilo restante (excepto el color del texto) de la cadena atribuida. Asignar un nuevo valor a esta propiedad también reemplaza el valor de la propiedad de marcador de posición con los mismos datos de cadena, aunque sin información de formato. La asignación de un nuevo valor a esta propiedad no afecta a ninguna 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


_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}];

PS Copió 3 respuestas diferentes de .


[yourtextFieldName setValue:[UIColor lightGrayColor] forKeyPath:@"_placeholderLabel.textColor"];