我和设计师一起工作,我们在项目中涉及一些不同的字体 - 有时候全部大写,有时候都是小写的。这适用于我的标签和按钮。这些可能会改变,所以我试图做的是自定义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
}
}
我该怎么做呢?或者,更好的是,有没有办法使用我的自定义标签作为按钮标签?
答案 0 :(得分:6)
您需要直接设置按钮的标题,而不是titleLabel的文本。更新了您的代码,如下所示:
override func didMoveToWindow() {
self.setTitle(self.titleLabel?.text?.uppercased(), for: UIControlState.normal)
}
此代码对我有用,希望这对您有帮助。
答案 1 :(得分:0)
不需要创建单独的Class只是为了使文本大写
/// Set Button Title
myButton.setTitle("myText".uppercased(), for: .normal)
/// Set Label Text
myLabel.text = "myText".uppercased()