【问题标题】:How to force UILabel to draw a text with upper case chars?如何强制 UILabel 用大写字符绘制文本?
【发布时间】:2013-09-20 00:07:27
【问题描述】:

如何强制UILabel用大写字符绘制文本?

【问题讨论】:

  • 要么你真正要求的东西没有得到很好的满足,要么你没有做太多的研究。
  • 我希望能找到类似字体样式的东西。

标签: ios uilabel uifont


【解决方案1】:

Objective-C

NSString *text = @"Hello";
[myLabel setText:[text uppercaseString]];

Swift 3 和 4

let text = "Hello"
myLabel.text = text.uppercased()

【讨论】:

  • 请注意,这并不总是 VoiceOver 友好的(“ADD ITEM”会读作“A.D.D. item”)所以也许值得将 accessibilityLabel 设置为非大写版本。
  • @Blixt:为什么 VoiceOver 会在“add”而不是“item”上按字母做?我没能重现这个。
  • @Arcank 我不确定逻辑到底是什么,但“ADD”是一个有效的常见首字母缩写词(注意力缺陷障碍),而 ITEM 不是,所以这可能就是原因。否则,更通用的启发式方法是说出 1-3 个大写字母作为首字母缩写词来捕捉最常见的情况(BMW、ID、FAQ、AR、VR、SAT 等),但不要管更长的词,因为它们可能只是一个大写单词。
  • 有趣!感谢您提供详细信息。
  • 为什么这是一个公认的答案?它使字符串大写,而不是强制标签文本为大写。每次设置时都需要调用 text.uppercased() 。文字
【解决方案2】:

快速查看文档会更快。

NSString *upperCase = [string uppercaseString];

【讨论】:

    【解决方案3】:

    您在询问是否可能存在与 iOS 中属性文本的 CSS 声明 text-transform: uppercase; 等效的内容。不幸的是,这不可用,我同意为此添加属性会很方便。

    我个人对 UILabel 进行了子类化,添加了一个 uppercase 布尔属性,并覆盖了文本设置器,以便如果 uppercase 设置为 true,它将自动调用 uppercaseString 的新值。

    【讨论】:

      【解决方案4】:

      如果您希望在 Swift 中强制字符串以所有大写字符显示,这是我的代码,非常适合我。

      titleLabel.text = youStringVariable.uppercaseString 
      

      【讨论】:

        【解决方案5】:

        这是 Swift 3 和 Swift 4 版本:

        titleLabel.text = titleLabel.text?.uppercased()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-01
          • 1970-01-01
          • 2013-04-29
          • 1970-01-01
          相关资源
          最近更新 更多