ios - UITextField 占位符颜色
问题描述
我完全意识到已经有多个答案。我添加了运行时属性。我还添加了一个 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)
}
解决方案
你有几个问题。
你打电话self.nameTextField.placeholder = username
。这会清除您可能拥有的任何属性占位符,并恢复为默认颜色。您需要在设置placeHolderColor
后设置placeholder
才能看到颜色。
get
您的计算placeHolderColor
属性将导致无限递归,因为它调用self.placeHolderColor
调用 getter 调用self.placeHolderColor
调用 getter...
推荐阅读
- php - 在 foreach 循环中引用刚刚在数组中设置的值
- sql - 由于 output.inserted id 错误,无法将记录添加到数据库中
- python - 在 Divio 上为 Wagtail 应用程序部署静态文件
- c++ - 了解复制初始化和隐式转换
- apache-spark - SparkSQL 尝试从不存在的路径读取数据
- laravel - Laravel Blade 模板堆栈不起作用
- php - 我在 PHP 中创建一个 API 并使用 curl 操作,我正在接收并能够使用我的 curl 发送数据,但一段时间后我收到此错误“
- javascript - 如何在本机反应(iOS)中检查退格(删除)keyPress
- android - 您需要在系统上安装 Android SDK 22 或更高版本以及最新的 Android Support Repository
- java - Java 8 - 对象列表上的可选类