我完全清楚已经有多个答案。我添加了运行时属性。我还添加了一个UITextField扩展。占位符颜色仍然拒绝在模拟器和设备上更改。我没有通过故事板设置占位符。通过从数据库中检索数据来设置占位符文本。为什么我的占位符颜色会发生变化?
extension UITextField{
@IBInspectable var placeHolderColor: UIColor? {
get {
return self.placeHolderColor
}
set {
self.attributedPlaceholder = NSAttributedString(string:self.placeholder != nil ? self.placeholder! : "", attributes:[kCTForegroundColorAttributeName as NSAttributedStringKey: newValue!])
}
}
}
func loadUserInfo(){
if let username = user.name{
self.nameLabel.text = username
self.nameTextField.placeholder = username
print(username)
}
答案 0 :(得分:1)
你有一些问题。
您致电self.nameTextField.placeholder = username
。这会清除您可能拥有的任何属性占位符,并返回默认颜色。设置placeHolderColor
后,您需要设置placeholder
才能看到颜色。
get
计算属性的placeHolderColor
将导致无限递归,因为它调用self.placeHolderColor
调用调用getter的self.placeHolderColor
调用getter的getter ...
答案 1 :(得分:0)
在获取用户名后的loadUserInfo中,我添加了self.nameTextField.attributedPlaceholder = NSAttributedString(string:user.name, attributes: [NSAttributedStringKey.foregroundColor: UIColor.green])