我有一个自定义的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 }
}但是没有设置文本标签。有什么建议吗?
发布于 2015-09-02 12:47:11
使用超级
override var text: String? {
get { return super.text }
set(v){ super.text = v }
}发布于 2016-02-12 19:17:29
所选的答案向您展示了如何在设置文本时修改文本,但它并没有具体解决这个问题,该问题询问如何创建一个UILabel子类,它将自动使文本大写。
下面是一个UILabel子类,它总是大写的
import UIKit
class UppercaseLabel: UILabel{
override var text: String?{
get{
return super.text
}
set(newText){
super.text = newText?.uppercaseString
}
}
}https://stackoverflow.com/questions/32353506
复制相似问题