Ios UITextField占位符颜色
我完全意识到在这个问题上已经有多种答案了。我添加了运行时属性。我还添加了一个UITextField扩展。占位符颜色仍然拒绝在模拟器和设备上更改。我不是通过故事板设置占位符。正在通过从数据库检索数据来设置占位符文本。为什么我的占位符颜色不会改变Ios UITextField占位符颜色,ios,swift,uitextfield,Ios,Swift,Uitextfield,我完全意识到在这个问题上已经有多种答案了。我添加了运行时属性。我还添加了一个UITextField扩展。占位符颜色仍然拒绝在模拟器和设备上更改。我不是通过故事板设置占位符。正在通过从数据库检索数据来设置占位符文本。为什么我的占位符颜色不会改变 你有一些问题 您可以调用self.nameTextField.placeholder=username。这将清除您可能具有的任何属性占位符,并将其恢复为默认颜色。设置占位符后,您需要设置占位符颜色,以便查看颜色 您的placeholder color计算
你有一些问题 您可以调用
self.nameTextField.placeholder=username
。这将清除您可能具有的任何属性占位符,并将其恢复为默认颜色。设置占位符
后,您需要设置占位符颜色
,以便查看颜色
您的
placeholder color
计算属性的get
将导致无限递归,因为它调用self.placeholder color
,调用getter,getter调用self.placeholder color
,getter在获取我添加的用户名后调用loadUserInfo中的getter…self.nameTextField.attributedPlaceholder=NSAttributedString(字符串:user.name,属性:[NSAttributedStringKey.foregroundColor:UIColor.green])
因此,在设置占位符后,我必须在代码中设置每个文本字段,而不是通过扩展或界面生成器?或向UITextField
扩展添加其他自定义属性(或函数),该扩展允许您设置占位符文本,同时保留已设置的任何颜色。然后将self.nameTextField.placeholder=username
更改为self.nameTextField.myPlaceholder=username
。这是对问题的回答还是问题的其他详细信息?请注意,这会使placeholder color
属性毫无意义。是的,我删除了扩展和运行时属性因为这是毫无意义的
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)
}