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.

10voto

ManuQiao Punkte 680

Für Xamarin.iOS-Entwickler habe ich es in diesem Dokument gefunden https://developer.xamarin.com/api/type/Foundation.NSAttributedString/

textField.AttributedPlaceholder = new NSAttributedString ("Hello, world",new UIStringAttributes () { ForegroundColor =  UIColor.Red });

9voto

Max Tymchii Punkte 726

Schnelle Version. Wahrscheinlich würde es jemandem helfen.

class TextField: UITextField {
   override var placeholder: String? {
        didSet {
            let placeholderString = NSAttributedString(string: placeholder!, attributes: [NSForegroundColorAttributeName: UIColor.whiteColor()])
            self.attributedPlaceholder = placeholderString
        }
    }
}

8voto

William Power Punkte 666

IOS 6 und höher bietet attributedPlaceholder auf UITextField . iOS 3.2 und höher bietet setAttributes:range: auf NSMutableAttributedString .

Sie können Folgendes tun:

NSMutableAttributedString *ms = [[NSMutableAttributedString alloc] initWithString:self.yourInput.placeholder];
UIFont *placeholderFont = self.yourInput.font;
NSRange fullRange = NSMakeRange(0, ms.length);
NSDictionary *newProps = @{NSForegroundColorAttributeName:[UIColor yourColor], NSFontAttributeName:placeholderFont};
[ms setAttributes:newProps range:fullRange];
self.yourInput.attributedPlaceholder = ms;

7voto

Mantosh Kumar Punkte 275

Diese Lösung für Swift 4.1

    textName.attributedPlaceholder = NSAttributedString(string: textName.placeholder!, attributes: [NSAttributedStringKey.foregroundColor : UIColor.red])

7voto

HenryRootTwo Punkte 2512

Swift 5 WITH CAVEAT.

let attributes = [ NSAttributedString.Key.foregroundColor: UIColor.someColor ]
let placeHolderString = NSAttributedString(string: "DON'T_DELETE", attributes: attributes)
txtField.attributedPlaceholder = placeHolderString

Die Einschränkung ist, dass Sie eine nicht leere String wo "DON'T_DELETE" steht, auch wenn diese Zeichenfolge an anderer Stelle im Code gesetzt ist. Das könnte Ihnen fünf Minuten Kopfzerbrechen ersparen.

  • wenn Sie eine Unterklasse bilden, MÜSSEN Sie dies in layoutSubviews tun (nicht in init)

  • Seltsamerweise müssen Sie NICHT den normalen placeholder . er weiß, dass er nicht zeichnen soll placeholder wenn Sie den attributierten Platzhalter verwenden.

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