Ich habe ein Design, das ein dunkles Blau implementiert UITextField
, da der Platzhaltertext standardmäßig eine dunkelgraue Farbe hat. Ich kann kaum erkennen, was der Platzhaltertext sagt.
Ich habe das Problem natürlich gegoogelt, aber ich habe noch keine Lösung gefunden, während ich die Swift-Sprache und nicht Obj-c verwende.
Gibt es eine Möglichkeit, die Textfarbe des Platzhalters in UITextField
Swift zu ändern ?
emailTextField
?myTextField.attributedPlaceholder = NSAttributedString(string: "placeholder text", attributes: [NSForegroundColorAttributeName: UIColor.white])
Mit Interface Builder können Sie dies schnell erreichen, ohne eine Codezeile hinzuzufügen.
Wählen Sie das aus
UITextField
und öffnen Sie den Identitätsinspektor rechts:Klicken Sie auf das Pluszeichen und fügen Sie ein neues Laufzeitattribut hinzu:
placeholderLabel.textColor (Swift 4)
_placeholderLabel.textColor (Swift 3 oder weniger)
Verwenden Sie Farbe als Typ und wählen Sie die Farbe aus.
Das ist es.
Das Ergebnis wird erst angezeigt, wenn Sie Ihre App erneut ausführen.
quelle
Erstellen Sie eine
UITextField
Erweiterung wie folgt:Und in Ihrem Storyboard oder .xib. Du wirst sehen
quelle
placeHolderColor
! Wenn Sie den Wert einer berechneten Eigenschaft selbst vom Getter der Eigenschaft zurückgeben, wird der Getter erneut aus dem Getter heraus aufgerufen, was zu einer unendlichen Rekursion führt. (Siehe: stackoverflow.com/a/42334711/2062785 )attributedString
, rufen Sie den ersten Buchstaben des Falls (falls nicht leer) ab und geben andernfalls die Textfarbe zurücknil
.Verwenden Sie in Swift 3.0
In Siwft 5.0 + verwenden
quelle
Dieser Code funktioniert in Swift3:
Lassen Sie mich wissen, wenn Sie ein Problem haben.
quelle
setValue
den Zugriff auf ein Privateigentum ist keine Verwendung erforderlich . Verwenden Sie geeignete öffentliche APIs.#colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
So legen Sie die Platzhalterfarbe ein für alle Mal
UITextField
in Ihrer App fest:Dadurch wird die gewünschte Farbe für alle
TextField
Platzhalter in der gesamten App festgelegt. Es ist jedoch erst seit iOS 9 verfügbar.Vor iOS 9 gibt es keine SwiftenceWhenContainedIn .... () -Methode in Swift, aber Sie können eine der hier bereitgestellten Lösungen verwenden. AuftretWhenContainedIn in Swift
quelle
In meinem Fall verwende ich Swift 4
Ich erstelle eine Erweiterung für UITextField
quelle
Xcode 9.2 Swift 4
quelle
Swift 4:
Ziel c :
quelle
Hier ist meine schnelle Implementierung für Swift 4:
Verwenden Sie wie:
hoffe es hilft jemandem!
quelle
Mit Swift 3 (wahrscheinlich 2) können Sie didSet für Platzhalter in der
UITextField
Unterklasse überschreiben , um Attribute auf diese Weise anzuwenden:quelle
Für Swift
Erstellen Sie die UITextField-Erweiterung
Wenn Sie vom Storyboard aus eingestellt sind.
quelle
Für Swift 3 und 3.1 funktioniert dies einwandfrei:
quelle
Für Swift 4.0, X-Code 9.1 oder iOS 11 können Sie die folgende Syntax verwenden, um unterschiedliche Platzhalterfarben zu erhalten
quelle
Ich bin überrascht zu sehen, wie viele schlechte Lösungen es hier gibt.
Hier ist eine Version, die immer funktioniert.
Swift 4.2
TIPP : Wenn Sie den Platzhaltertext nach dem Einstellen der Farbe ändern, wird die Farbe zurückgesetzt.
quelle
quelle
Crubios Antwort-Update für Swift 4
Wählen Sie das UITextField aus und öffnen Sie den Identitätsinspektor rechts:
Klicken Sie auf das Pluszeichen und fügen Sie ein neues Laufzeitattribut hinzu: placeholderLabel.textColor (anstelle von _placeholderLabel.textColor)
Verwenden Sie Farbe als Typ und wählen Sie die Farbe aus.
Wenn Sie Ihr Projekt ausführen, werden die Änderungen angezeigt.
quelle
Für Swift 4.2 und höher können Sie dies wie folgt tun:
quelle
In meinem Fall habe ich Folgendes getan:
quelle
Hier schreibe ich alle UIDesignable von UITextField. Mit Hilfe dieses Codes können Sie direkt über den UI-Dateiinspektor im Storyboard darauf zugreifen
quelle
Für Swift
Sie können dies verwenden;
quelle
Es geht mehr darum, Ihr Textfeld zu personalisieren, aber trotzdem werde ich diesen Code von einer anderen Seite teilen und ihn ein wenig verbessern:
Und Sie können es so verwenden:
Zu wissen, dass Sie eine
UITextField
Verbindung zu einem habenViewController
.Quelle: http://codepany.com/blog/swift-3-custom-uitextfield-with-single-line-input/
quelle
Für Ziel C :
Für Swift :
quelle
Ziel C-Code zum Ändern der Textfarbe des Platzhalters.
Importieren Sie zuerst diese objc / runtime-Klasse -
Ersetzen Sie dann Ihren Textfeldnamen -
quelle
für iOS13
quelle
Verwenden Sie so in Swift,
In Ziel C.
quelle
}}
quelle
Verwenden Sie diese Option, um einen zugeordneten Platzhalter hinzuzufügen:
quelle
Für Swift 4
quelle
quelle