ios - 如何快速为整个应用程序的 UITextField 设置全局占位符颜色?

标签 ios swift swift2 uitextfield appdelegate

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

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

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

如果您有任何其他替代方法来完成这项工作,请告诉我。

我正在使用 xcode 7.1.1 swift 2.0

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

我们如何访问和更改此默认代码?

最佳答案

创建扩展方法

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)

关于ios - 如何快速为整个应用程序的 UITextField 设置全局占位符颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36687995/

相关文章:

swift - 在 Swift 2.0 中屏蔽图像

ios - 如何在不将私有(private) header 包含到框架中的情况下创建私有(private)模块?

ios - 带有翻转动画的导航 Controller

ios - 解析 iOS 如何通过在相关 PFObject 中找到的属性查询对象?

ios - 我如何提示用户打开位置服务,即转到设置→隐私→位置服务

arrays - 在 Swift 5.1 中,在不知道键的情况下,根据 Date 类型的字典值对字典数组进行排序?

ios - 在 swift 2 的 textview 中允许退格

ios - SpriteKit,Swift 2.0 - Scrollview 给我一个错误

swift - OptionSetType 和枚举

SwiftUI 和 Combine,如何创建可重用的发布者来检查字符串是否为空