我有一个自定义 UI Button 子类,当我调用
setTitle(_:for:)
方法时,标题没有更改,按钮显示“Button”标题。我在awakeFromNib()
中调用这个方法。
这是我的自定义按钮代码
class DeleteButton: UIButton {
override func awakeFromNib() {
self.backgroundColor = .systemRed
self.setTitleColor(.white, for: .normal)
self.setTitle("Eliminar", for: .normal)
}
override func layoutSubviews() {
self.layer.cornerRadius = self.frame.height/2
}
}
调试代码我得到这个:
所以我不明白为什么按钮在用户界面中不显示标题。有什么关于
awakeFromNib()
的事吗?
问题解决了。我错过了
super.layoutSubviews()
方法中的layoutSubviews()
您可以在 init 函数内设置值,而不是在
awakeFromNib()
中设置值。例如,您可以override init(frame: CGRect)
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .systemRed
self.setTitleColor(.white, for: .normal)
self.setTitle("Eliminar", for: .normal)
}
将 Button 的子类更改为 DeleteButton
在我的例子中,如果按钮类型是系统,那么它就可以工作,不知道为什么:(
UIButton(类型:.system)
在 iOS 17.2 中