我有一个自定义UILabel
,我覆盖了它的文字属性。如果upperCase = true
我需要修改此属性的值,问题是我以递归方式调用setter。
@IBDesignable class CustomLabel: UILabel {
@IBInspectable var upperCase: Bool = false
override var text: String? {
willSet {
if upperCase == true {
text = newValue?.uppercaseString
}
}
}
}
我也尝试过:
var aux: String?
override var text: String? {
get { return aux }
set { aux = newValue }
}
但未设置文本标签。有什么建议吗?
答案 0 :(得分:6)
使用超级
override var text: String? {
get { return super.text }
set(v){ super.text = v }
}
答案 1 :(得分:1)
所选答案显示了如何在设置时修改文本,但它没有专门解决问题,该问题询问如何创建一个自动使文本大写的UILabel
子类。
这是一个永远是大写的UILabel
子类
import UIKit
class UppercaseLabel: UILabel{
override var text: String?{
get{
return super.text
}
set(newText){
super.text = newText?.uppercaseString
}
}
}