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啊,当然。我创建了一个无限循环。谢谢