598 Stimmen

iPhone UITextField - Farbe des Platzhaltertextes ändern

Ich würde gerne die Farbe des Platzhaltertextes ändern, den ich in meinem UITextField Kontrollen, um es schwarz zu machen.

Ich würde es vorziehen, dies zu tun, ohne normalen Text als Platzhalter zu verwenden und alle Methoden überschreiben zu müssen, um das Verhalten eines Platzhalters zu imitieren.

Ich glaube, wenn ich diese Methode außer Kraft setze:

- (void)drawPlaceholderInRect:(CGRect)rect

dann sollte ich in der Lage sein, dies zu tun. Aber ich bin unsicher, wie man das tatsächliche Platzhalter-Objekt aus dieser Methode zugreifen.

817voto

user1071136 Punkte 15458

Seit der Einführung von attributierten Strings in UIViews in iOS 6 ist es möglich, dem Platzhaltertext eine Farbe zuzuweisen, wie hier:

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 Punkte 3512

Einfach und schmerzfrei, könnte für manche eine einfache Alternative sein.

_placeholderLabel.textColor

Wenn Sie nicht für die Produktion vorgeschlagen werden, kann Apple Ihre Einsendung ablehnen.

197voto

adam Punkte 22004

Sie können überschreiben drawPlaceholderInRect:(CGRect)rect als solche, um den Platzhaltertext manuell zu rendern:

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

183voto

Tomino Punkte 5549

Dies funktioniert in Swift <3.0:

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

Getestet in iOS 8.2 und iOS 8.3 Beta 4.

Mauersegler 3:

myTextfield.attributedPlaceholder =
NSAttributedString(string: "placeholder text", attributes: [NSForegroundColorAttributeName : UIColor.red])

Mauersegler 4:

myTextfield.attributedPlaceholder =
NSAttributedString(string: "placeholder text", attributes: [NSAttributedStringKey.foregroundColor: UIColor.red])

Swift 4.2:

myTextfield.attributedPlaceholder =
NSAttributedString(string: "placeholder text", attributes: [NSAttributedString.Key.foregroundColor: UIColor.red])

175voto

Manju Punkte 4133

Sie können die Textfarbe des Platzhalters in eine beliebige Farbe ändern, indem Sie den folgenden Code verwenden.

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X