【问题标题】:Swift - How to auto-capitalize the label of a UIButton?Swift - 如何自动大写 UIButton 的标签?
【发布时间】:2018-11-24 22:00:28
【问题描述】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 如果要使用setTitle(_:for:)设置标题,请使用title(for:)获取标题。
【解决方案2】:

不需要创建单独的类来使文本大写

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多