Wie kann man die Platzhalterfarbe des dynamisch ändern UITextField
? Dies ist immer die gleiche Systemfarbe.
Keine Option im xib-Editor.
ios
uitextfield
der Geher
quelle
quelle
Antworten:
Aus Dokumenten
Ziel c
NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"Some Text" attributes:@{ NSForegroundColorAttributeName : [UIColor redColor] }]; self.myTextField.attributedPlaceholder = str;
Schnell
let str = NSAttributedString(string: "Text", attributes: [NSForegroundColorAttributeName:UIColor.redColor()]) myTextField.attributedPlaceholder = str
Swift 4
let str = NSAttributedString(string: "Text", attributes: [NSAttributedString.Key.foregroundColor: UIColor.red]) myTextField.attributedPlaceholder = str
quelle
NSAttributedString *str = [[NSAttributedString alloc] initWithString:@"Some Text" attributes:@{ UITextAttributeTextColor : [UIColor redColor] }];
_placeholderLabel.textColor
In kurzer Zeit
myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder", attributes:[NSForegroundColorAttributeName : UIColor.redColor()])
Ziel c
UIColor *color = [UIColor grayColor]; nameText.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Full Name" attributes:@{NSForegroundColorAttributeName:color}];
PS 3 verschiedene Antworten von Stackoverflow kopiert.
quelle
_placeholderLabel
: Einige Benutzer melden Ablehnung des App Store: stackoverflow.com/questions/1340224/…Verwenden Sie den folgenden Code
[YourtextField setValue:[UIColor colorWithRed:97.0/255.0 green:1.0/255.0 blue:17.0/255.0 alpha:1.0] forKeyPath:@"_placeholderLabel.textColor"];
quelle
Fügen Sie zuerst diese Erweiterung hinzu
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 } } }
Anschließend können Sie die Farbe des Platzhaltertextes über das Storyboard oder einfach wie folgt ändern:
textfield.placeHolderTextColor = UIColor.red
quelle
Ich benutze dies in SWIFT:
myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder", attributes: [NSForegroundColorAttributeName : UIColor.redColor()])
Es scheint, dass dies für andere funktioniert ... Ich habe keine Ahnung, warum es bei mir vorher nicht funktioniert hat ... vielleicht einige Projekteinstellungen. Danke für die Kommentare. Derzeit habe ich keine Möglichkeit, es erneut zu testen.
Veraltet: Aber ich weiß nicht warum, Text wird korrekt angewendet, aber die Platzhalterfarbe bleibt gleich (schwarz / grau).
--iOS8
quelle
Versuche dies:
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;
quelle
Sie können den folgenden Code verwenden
[txtUsername setValue:[UIColor darkGrayColor] forKeyPath:@"_placeholderLabel.textColor"];
quelle
Diese Lösung funktioniert ohne Unterklassen und ohne private Ivars:
@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 } } }
quelle
Versuche dies.
UIColor *color = [UIColor redColor]; self.txtUsername.attributedPlaceholder = [[NSAttributedString alloc] initWithString:@"Your Placeholder Text" attributes:@{NSForegroundColorAttributeName:color}];
quelle
@ DogCoffees Antwort in Swift wäre
let placeholderAttrs = [ NSForegroundColorAttributeName : UIColor.redColor()] let placeholder = NSAttributedString(string: "Some text", attributes: placeholderAttrs) textField.attributedPlaceholder = placeholder
quelle
Dies ist eine verbesserte Version der Erweiterung von @Medin Piranej (gute Idee übrigens!). Diese Version vermeidet einen endlosen Zyklus, wenn Sie versuchen, placeHolderTextColor abzurufen, und verhindert Abstürze, wenn der Farbsatz Null ist.
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 ?? "") } } }
}}
quelle
Für Swift 3 können wir diesen Code verwenden, um die Platzhaltertextfarbe für UITextfield zu ändern
let placeholderColor = UIColor.red mytextField.attributedPlaceholder = NSAttributedString(string: mytextField.placeholder, attributes: [NSForegroundColorAttributeName : placeholderColor])
quelle
Swift 4
let placeholderColor = UIColor.red self.passwordTextField?.attributedPlaceholder = NSAttributedString(string:"placeholderText", attributes: [NSAttributedStringKey.foregroundColor : placeholderColor])
quelle