我正在与一位设计师合作,我们在该项目中涉及几种不同的字体 - 有时所有内容全部大写,有时全部小写。这适用于我的标签和按钮。这些可能会改变,所以我试图做的是自定义 UILabel 和 UIButton 类,其中按钮标题将自动调整为我想要的大小写,而不考虑在界面生成器中输入的大小写或代码中的文本。我已经使用以下代码成功地使用自定义标签管理了此操作:
class MyHeadlineLabel : UILabel {
override func didMoveToWindow() {
self.text = self.text?.lowercased()
self.font = MyFonts.headlineFont
}
}
但是,向 UIButton 的 didMoveToWindow() 函数添加类似的代码不起作用:
class MyDarkTextButton: UIButton {
override func didMoveToWindow() {
self.titleLabel?.text = self.titleLabel?.text?.uppercased()
self.font = MyFonts.subHeadFont
}
}
我该如何去做呢?或者,更好的是,有没有办法使用我的自定义标签作为按钮标签?
您需要设置按钮的
title
,而不是直接设置titleLabel
的文字。更新您的代码如下:
override func didMoveToWindow() {
self.setTitle(self.title(for: .normal)?.uppercased(), for: .normal)
}
此代码对我有用,希望对您有所帮助。
无需创建单独的类即可使文本大写
/// Set Button Title
myButton.setTitle("myText".uppercased(), for: .normal)
/// Set Label Text
myLabel.text = "myText".uppercased()
通过
updateConfiguration()
函数在 Swift 5 中轻松完成。
您可以实现自己的按钮类并将文本更改为大写文本。
class MyButton: UIButton {
override func updateConfiguration() {
guard let updatedConfiguration = configuration else {
return
}
updatedConfiguration.title = updatedConfiguration.title?.uppercased()
self.configuration = updatedConfiguration
}
然后,无论您想要一个大写文本的按钮,只需将 Storyboard 按钮的类设置为此即可。