582 votes

iPhone UITextField - Changer la couleur du texte de l'espace réservé

Je voudrais changer la couleur du texte de l'espace réservé je mis dans mon UITextField des contrôles, de la rendre noire.

Je préfère le faire sans l'aide de texte normal que l'espace réservé et d'avoir à remplacer toutes les méthodes pour imiter le comportement d'un espace réservé.

Je crois que si je remplace cette méthode..

- (void)drawPlaceholderInRect:(CGRect)rect

..alors que je devrais être capable de faire cela. Mais je ne suis pas sûr comment accéder à la véritable espace réservé à l'objet à partir de cette méthode.

817voto

user1071136 Points 7601

Depuis l'introduction de l'attribuée chaînes dans UIViews dans iOS 6, il est possible d'attribuer une couleur à l'espace réservé de texte comme ceci:

if ([textField respondsToSelector:@selector(setAttributedPlaceholder:)]) {
  UIColor *color = [UIColor blackColor];
  textField.attributedPlaceholder = [[NSAttributedString alloc] initWithString:placeholderText attributes:@{NSForegroundColorAttributeName: color}];
} else {
  NSLog(@"Cannot set placeholder text's color, because deployment target is earlier than iOS 6.0");
  // TODO: Add fall-back code to set placeholder color.
}

239voto

Jack Points 682

Facile et sans douleur, pourrait être une alternative facile pour certains.

enter image description here

195voto

adam Points 10572

Vous pouvez remplacer drawPlaceholderInRect:(CGRect)rect en tant que tel manuellement rendre le texte de l'espace réservé:

- (void) drawPlaceholderInRect:(CGRect)rect {
    [[UIColor blueColor] setFill];
    [[self placeholder] drawInRect:rect withFont:[UIFont systemFontOfSize:16]];
}

175voto

Manju Points 1185

Vous pouvez Modifier l'espace Réservé textcolor à n'importe quelle couleur que vous voulez en utilisant le code ci-dessous.

UIColor *color = [UIColor lightTextColor];
YOURTEXTFIELD.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"PlaceHolder Text" attributes:@{NSForegroundColorAttributeName: color}];

158voto

digdog Points 3285

Peut-être vous voulez essayer de cette façon, mais Apple pourrait vous avertir sur l'accès privé ivar:

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

NOTE
Cela ne fonctionne pas sur iOS 7 plus, selon Martin Alléus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X