我UILabel在我的应用程序中创建了一个 Swift 子类来管理它在所有视图中的样式,以便以后更容易修改样式。我知道要将字符串转换为大写,我可以使用其中任何一个uppercased()来实现。
但是,问题在于当我在text 属性的子类中使用uppercased()或时,它在运行时不起作用。奇怪的是它在情节提要上正确呈现(使用),但在运行时,它显示了未大写的字符串。capitalizedUILabel@IBDesignable
例如,我在UILabel子类中有一段与此类似的代码:
textColor = ...
font = UIFont(name: "Avenir-Medium", size: 12.0)
text = text!.uppercased()
Run Code Online (Sandbox Code Playgroud)
然后在视图控制器中,我有一个类似于这样的代码:
label_noWeightMessage.text = "No weight logs this week..."
Run Code Online (Sandbox Code Playgroud)
除了大小写更改外,颜色和字体应用正确。我在这里错过了什么吗?
在故事板中,文本显示为“NO WEIGHT LOGS THIS WEEK...”但在运行时的模拟器中,它恢复到原始情况。
我知道我可以只用大写字母输入文本。但这不是我想要的。我希望能够在所有屏幕上重复使用样式,而无需重新键入所有UILabel文本,只需在一处更改即可。
谢谢!
文本更改时不会设置为大写。转换为大写didSet的部分text在覆盖的属性UILabel。
如果要更改通过 Interface Builder 设置文本的标签的文本,也可以覆盖awakeFromNib:
class CustomLabel: UILabel {
override var text: String? {
didSet {
super.text = text?.uppercased()
}
}
override func awakeFromNib() {
super.awakeFromNib()
super.text = text?.uppercased()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2212 次 |
| 最近记录: |