这是我的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"并不重要。或者"归因于",字体,颜色等。我给它一个初始的占位符值但是当我运行应用程序时它只是空白。有什么建议吗?
答案 0 :(得分:1)
您正在覆盖drawPlaceholder
方法,而不是调用super
。并且您的替换代码不会尝试实际绘制占位符文本。因此占位符永远不会出现。
为什么不覆盖placeholder
属性的setter,以便根据需要设置attributedPlaceholder
。然后你不需要覆盖drawPlaceholder
,一切都会有效。