gpt4 book ai didi

ios - 如何从 Swift 子类大写 UILabel 的文本属性

转载 作者:行者123 更新时间:2023-11-28 10:09:17 27 4
gpt4 key购买 nike

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

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

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

textColor = ...
font = UIFont(name: "Avenir-Medium", size: 12.0)
text = text!.uppercased()

然后在 View Controller 中,我有一个类似这样的代码:

label_noWeightMessage.text = "No weight logs this week..."

除了大小写更改外,颜色和字体应用正确。我在这里遗漏了什么吗?

在 Storyboard 中,文本显示为“本周无体重记录...”但在运行时的模拟器中,它会恢复到原来的情况。

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

谢谢!

最佳答案

文本在更改时未设置为大写。在覆盖的 UILabeltext 属性的 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()
}
}

关于ios - 如何从 Swift 子类大写 UILabel 的文本属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50154770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com