如何在swift中为整个应用程序设置UITextField的全局占位符颜色?

时间:2016-04-18 07:39:10

标签: ios swift swift2 uitextfield appdelegate

我正在创建一个应用程序,其中我使用了多个UITextfield' s。我知道如何更改单个文本字段的placeholder颜色。

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

但我想更改整个应用中所有UITextField的占位符颜色。我的应用有超过50个UIViewControllers,其中超过25个有textFields(每个屏幕2到22个)。我想要一个可以在一个地方全局使用的代码,这样我就不需要去每个视图控制器并手动更改它。

如果您还有其他选择来完成工作,请告诉我。

我正在使用xcode 7.1.1 swift 2.0

更新: 默认情况下,占位符颜色设置为浅灰色。我们有什么方法可以调整默认行为并将其更改为任何其他颜色吗?

我们如何访问此默认代码并进行更改?

2 个答案:

答案 0 :(得分:2)

创建扩展方法

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])
}
}

使用示例

/ 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)

答案 1 :(得分:0)

使用NSAttributedString声明一个宏。

将所有归属字符串赋予所有文本字段。

因此,当您更改宏时,将反映在所有地方..

请查看以下内容。

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

并在Textfield属性中使用它。

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

希望有所帮助......