2016-04-18 9 views
0

Ich erstelle eine App, in der ich mehrere UITextfield 's verwende. Ich weiß, wie man die placeholder Farbe eines einzelnen Textfelds ändert.Wie setze ich eine globale Platzhalterfarbe für ein UITextField für die gesamte App in swift?

textField.attributedPlaceholder = NSAttributedString(string: "Username", attributes: [NSForegroundColorAttributeName: UIColor.redColor()]).

Aber ich möchte die Platzhalterfarbe aller UITextField s in der gesamten App ändern. Meine App hat mehr als 50 UIViewControllers und mehr als 25 von ihnen hat TextFields (2 bis 22 pro Bildschirm). Ich möchte einen Code, der global an einem Ort verwendet werden kann, so dass ich nicht auf jeden View-Controller zugreifen und ihn manuell ändern muss.

Wenn Sie andere Alternativen haben, um die Arbeit zu erledigen, lassen Sie es mich wissen.

Ich bin mit xcode 7.1.1swift 2.0

Update: Für Standard der Platzhalter Farbe wird auf hellgraue Farbe. Gibt es eine Möglichkeit für uns, dieses Standardverhalten zu ändern und es in eine andere Farbe zu ändern?

Wie können wir auf diesen Standardcode zugreifen und ihn ändern?

+0

dies sehen, es hilft Ihnen https://www.natashatherobot.com/ using-swift-extensions/ –

+0

@Anbu.Karthik Ich sah den Link, aber ich weiß nicht, wie es in meinem Code hilfreich sein könnte. Könnten Sie genauer –

+0

ya sicher sein ....... –

Antwort

1

Erstellen Sie die Erweiterungsmethode

extension String { 

func toAttributedString(font font:UIFont!, kerning: CGFloat!, color:UIColor!) -> NSAttributedString { 
    return NSAttributedString(string: self as String, font: font, kerning: kerning, color: color)! 
} 
} 

extension NSAttributedString { 

convenience init?(string text:String, font:UIFont!, kerning: CGFloat!, color:UIColor!) { 
    self.init(string: text, attributes: [NSKernAttributeName:kerning, NSFontAttributeName:font, NSForegroundColorAttributeName:color]) 
} 
} 

Anwendungsbeispiel

/ Example Usage 
var testString: String = "Hi Kautham" 

var testAttributedString: NSAttributedString = testString.toAttributedString(font: UIFont.boldSystemFontOfSize(20), kerning: 2.0, color: UIColor.whiteColor()) 


let label = UILabel(frame: CGRect(x: 50, y: 50, width: 200, height: 20)) 

label.attributedText = testAttributedString 
self.view.addSubview(label) 
+0

Danke für deine Antwort das ist wirklich hilfreich. –

+0

@KauthamMurugan - glücklich, Bruder zu hören, es funktioniert bz Ich habe das nicht getestet –

0

Deklarieren Sie ein Makro mit Ihrem NSAttributedString.

Geben Sie diese Attributierte Zeichenfolge an alle Textfelder, wo immer Sie möchten.

So dass, wenn Sie in Makro ändern, in allen Orten widerspiegeln ..

Überprüfen Sie die folgenden aus.

let CommonTextFieldAttr : NSDictionary = [NSForegroundColorAttributeName:UIColor.redColor()] 

Und verwenden Sie es in Textfield-Eigenschaften.

textField?.attributedPlaceholder = NSAttributedString(string: "sdfa",attributes: CommonTextFieldAttr as? [String : AnyObject]) 

Hoffe, es hilft ..

+0

Frage bezieht sich auf swift, können Sie Ihre Antwort anpassen –

+0

@Balaji Vielen Dank für Ihr Interesse. Aber ich kenne diese Methode bereits. Das Problem ist, Um das neue Attribut zu setzen, muss ich die zweite Zeile Ihres Codes in allen View-Controllern für jedes einzelne Textfeld verwenden, das ich hasse. Ich habe mehrere Textfelder in einer Ansicht Controller bis zu 22 max. –

Verwandte Themen