如何自动将 UIButton 的标签大写?

问题描述 投票:0回答:3

我正在与一位设计师合作,我们在该项目中涉及几种不同的字体,有时所有内容都大写,有时全部小写。这适用于我的标签和按钮。这些可能会改变,所以我试图做的是自定义 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            
    }
}

我该如何去做呢?或者,更好的是,有没有办法使用我的自定义标签作为按钮标签?

ios swift uibutton uilabel
3个回答
16
投票

您需要设置按钮的

title
,而不是直接设置
titleLabel
的文字。更新您的代码如下:

override func didMoveToWindow() {
    self.setTitle(self.title(for: .normal)?.uppercased(), for: .normal)
}

此代码对我有用,希望对您有所帮助。


0
投票

无需创建单独的类即可使文本大写

/// Set Button Title
myButton.setTitle("myText".uppercased(), for: .normal)

/// Set Label Text
myLabel.text = "myText".uppercased()

0
投票

通过

updateConfiguration()
函数在 Swift 5 中轻松完成。

您可以实现自己的按钮类并将文本更改为大写文本。

class MyButton: UIButton {
    override func updateConfiguration() {
        guard let updatedConfiguration = configuration else {
            return
        }

        updatedConfiguration.title = updatedConfiguration.title?.uppercased()
        
        self.configuration = updatedConfiguration
}

然后,无论您想要一个大写文本的按钮,只需将 Storyboard 按钮的类设置为此即可。

© www.soinside.com 2019 - 2024. All rights reserved.