首页 > 解决方案 > 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)
        }

标签: iosswiftuitextfield

解决方案


你有几个问题。

你打电话self.nameTextField.placeholder = username。这会清除您可能拥有的任何属性占位符,并恢复为默认颜色。您需要在设置placeHolderColor后设置placeholder才能看到颜色。

get您的计算placeHolderColor属性将导致无限递归,因为它调用self.placeHolderColor调用 getter 调用self.placeHolderColor调用 getter...


推荐阅读