【问题标题】:SF Pro Text Medium font is not found in swift code在 swift 代码中找不到 SF Pro Text Medium 字体
【发布时间】:2018-10-24 16:17:57
【问题描述】:

我正在使用 xCode 9.3.1 和 Swift 4.1。

我正在尝试以编程方式在我的应用代码中使用 SF Pro Text Medium 字体。但是在 swift 文件和应用程序崩溃的源代码中找不到此字体。

代码如下: NSAttributedStringKey.font: UIFont(name: ".SFProText-Medium", size: 24.0)!

在运行时它会抛出以下错误: 致命错误:在展开可选值时意外发现 nil

任何其他标准字体都可以使用。

这个字体在故事板中可用,我已经成功使用它。

为什么它不能以编程方式工作?我是否必须将其添加到 xCode(plist 等)中才能使其工作?

【问题讨论】:

    标签: ios swift storyboard xcode9 swift4.1


    【解决方案1】:

    按照以下步骤操作,看看它是否适合您:


    1) 将字体文件添加到您的项目中

    2) 在您的info.plist 中,按下最上方的加号按钮,旁边是Information Property List。输入Fonts provided by application(它应该会自动完成)。像这样添加你的字体文件:

    3) 按下左侧菜单上的项目并转到Build Phases 并将字体文件添加到显示Copy Bundle Sources的位置


    如果您不确定您的字体叫什么,请打印所有字体,直到找到您的字体名称。在viewDidLoad 中运行它

    UIFont.familyNames.forEach({ familyName in
        let fontNames = UIFont.fontNames(forFamilyName: familyName)
        print(familyName, fontNames)
    })
    

    【讨论】:

    • Tx Nader,非常详细和分步说明。它就像魅力一样。唯一仍然困扰我的谜团是,如果我们必须以编程方式使用它们,为什么我们必须包含系统字体,而它已经可用 xCode 并且可以在 IB 中使用。我想如果它已经包含在 xCode IB 中,它也应该可以以编程方式使用。
    • @Matt Tbh 我不确定,字体应该添加到您的plist 并捆绑源以便工作,所以我猜这个特定字体已经在您的 Mac 上,所以它出现在您的 IB 中。当你使用 IB 字体运行应用程序时,字体是否真的出现?
    【解决方案2】:

    我是否必须将其添加到 xCode(plist 等)中才能使其正常工作?

    当然。按照 Nader 的指示,确保字体文件将您的项目作为目标成员,如下所示:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2018-08-27
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 2015-12-05
      • 1970-01-01
      相关资源
      最近更新 更多