无法在子类UITextField中设置属性占位符的文本颜色

时间:2016-10-07 00:08:51

标签: ios swift uitextfield

这是我的UITextField子类的一个愚蠢的版本:

class MyTextField: UITextField {

    override func drawPlaceholder(in rect: CGRect) {
        if let placeholder = self.placeholder {
            print(placeholder) // -> prints the value
            let attributes = [NSForegroundColorAttributeName: UIColor.red]
            self.attributedPlaceholder = NSAttributedString(string: placeholder, attributes: attributes)
        }
    }
}

在IB中,textfield被分配给我的子类,但是我是否把它作为" Plain"并不重要。或者"归因于",字体,颜色等。我给它一个初始的占位符值但是当我运行应用程序时它只是空白。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您正在覆盖drawPlaceholder方法,而不是调用super。并且您的替换代码不会尝试实际绘制占位符文本。因此占位符永远不会出现。

为什么不覆盖placeholder属性的setter,以便根据需要设置attributedPlaceholder。然后你不需要覆盖drawPlaceholder,一切都会有效。