【问题标题】:How do I change the font of a UILabel in swift without changing the font size?如何在不更改字体大小的情况下快速更改 UILabel 的字体?
【发布时间】:2015-09-14 11:00:21
【问题描述】:

我以编程方式创建了一个标签,我将 adjustsToFitWidth 设置为 true。现在我想更改它的字体,但如果不使标签的字体大小保持不变,我就无法做到这一点。有谁知道我怎样才能快速更改 UILabel 的字体而不是字体大小?

【问题讨论】:

  • 不改变字体大小并不一定意味着相同文本和相同大小的两种不同字体会占用相同的空间。

标签: ios swift fonts labels


【解决方案1】:

为什么不获取字体大小,并用这个值指定一个新字体?

let fontSize = self.label.font.pointSize;
self.label.font = UIFont(name: "HelveticaNeue", size: fontSize)

【讨论】:

    【解决方案2】:

    你可以这样做:

    label.font = UIFont(name: "Arial", size: label.font.pointSize)
    

    这将使用相同的字体大小,“Arial”可以是您想要选择的任何字体。

    【讨论】:

      【解决方案3】:

      改进的答案。

      UILabel 子类化:添加一个空的 swift 文件并命名。例如.EZLabel。添加以下代码。

      import Foundation
      import UIKit
      
      class EZLabel: UILabel {
      
          override func awakeFromNib() {
              super.awakeFromNib()
              changeFontName()
          }
      
          func changeFontName()
          {
              self.font = UIFont(name: "Roboto", size: self.font.pointSize)
          }
      }
      

      这样做的好处是,如果需要的话,整个项目中每个UILabel的字体都不需要更改。

      【讨论】:

        【解决方案4】:
        extension UILabel {
            override open func awakeFromNib() {
                super.awakeFromNib()
                changeFontName()
            }
        
            func changeFontName()
            {
                self.font = UIFont(name: "YOUR_FONT_NAME", size: self.font.pointSize)
            }
        }
        
        /* Do this also for buttons and any uiviews */
        

        【讨论】:

        • 首先:创建一个 swift 文件,然后将该代码放在该文件上方的导入 UIKIt 部分而不是 Foundation 下,然后一切都将正常工作,只需运行您的应用程序,您的应用程序内的所有标签都将采用你刚刚给他们的字体。
        猜你喜欢
        • 2016-11-22
        • 2013-05-14
        • 2012-06-16
        • 2020-01-04
        • 2021-07-18
        • 2014-08-09
        • 1970-01-01
        • 2011-02-24
        • 2014-10-07
        相关资源
        最近更新 更多