修改覆盖属性willSet get / set的值

时间:2015-09-02 12:43:19

标签: ios swift

我有一个自定义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 }
}

但未设置文本标签。有什么建议吗?

2 个答案:

答案 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
        }
    }
}