Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从Swift子类将UILabel的文本属性大写_Ios_Swift_Uilabel - Fatal编程技术网

Ios 如何从Swift子类将UILabel的文本属性大写

Ios 如何从Swift子类将UILabel的文本属性大写,ios,swift,uilabel,Ios,Swift,Uilabel,我在我的应用程序中为UILabel创建了一个Swift子类,用于管理其在所有视图中的样式,以便以后更容易修改样式。我知道要将字符串转换为大写,我可以使用uppercased()来实现 但是,问题在于当我在UILabel文本属性的子类中使用uppercased()或大写的时,它在运行时不起作用。奇怪的是,它在情节提要上被正确呈现(使用@IBDesignable),但在运行时,它显示了未大写的字符串 例如,我在UILabel子类中有一个类似的代码: textColor = ... font = UI

我在我的应用程序中为
UILabel
创建了一个Swift子类,用于管理其在所有视图中的样式,以便以后更容易修改样式。我知道要将字符串转换为大写,我可以使用
uppercased()
来实现

但是,问题在于当我在
UILabel
文本属性的子类中使用
uppercased()
大写的
时,它在运行时不起作用。奇怪的是,它在情节提要上被正确呈现(使用
@IBDesignable
),但在运行时,它显示了未大写的字符串

例如,我在
UILabel
子类中有一个类似的代码:

textColor = ...
font = UIFont(name: "Avenir-Medium", size: 12.0)
text = text!.uppercased()
然后在视图控制器中,我有一个类似的代码:

label_noWeightMessage.text = "No weight logs this week..."
颜色和字体应用正确,但大小写更改除外。我是不是遗漏了什么

在故事板中,文本显示为“本周无重量日志…” 但在运行时的模拟器中,它会恢复到原始情况

我知道我可以用大写字母键入文本。但那不是我想要的。我希望能够在所有屏幕上重复使用样式,而不必重新键入所有
UILabel
文本,只需在一个地方更改它


谢谢

文本更改时未设置为大写。在覆盖的
UILabel
中的
text
属性的
didSet
部分中转换为大写

如果要更改通过Interface Builder设置文本的标签的文本,请同时覆盖
awakeFromNib

class CustomLabel: UILabel {
    override var text: String? {
        didSet {
            super.text = text?.uppercased()
        }
    }

    override func awakeFromNib() {
        super.awakeFromNib()

        super.text = text?.uppercased()
    }
}

我认为您需要在您的应用程序中调用
super.text=text?.uppercased()
didSet@rbaldwin啊,当然。我创建了一个无限循环。谢谢