【问题标题】:Xcode does not see font in code but only in IBXcode 在代码中看不到字体,而只能在 IB 中看到
【发布时间】:2018-11-13 14:17:36
【问题描述】:

我的应用程序中几乎没有 Montserrat 字体,需要添加这些字体的斜体版本,我将它们添加到项目、目标、info.plist 和任何需要的地方。

当我要打印字体名称时,我只能看到以前的字体

- 0 : "Montserrat-Regular"
- 1 : "Montserrat-Medium"
- 2 : "Montserrat-Light"
- 3 : "Montserrat-SemiBold"

奇怪的是,当我在 IB 中将斜体字体设置为任何标签时,它会显示在代码中

- 0 : "Montserrat-Regular"
- 1 : "Montserrat-Medium"
- 2 : "Montserrat-Light"
- 3 : "Montserrat-SemiBold"
- 4 : "Montserrat-LightItalic"
- 5 : "Montserrat-Italic"

如果我在 IB 中有这些字体 UIFont(name: "Montserrat-LightItalic", size: size) 将起作用,但如果我从 IB 中删除它,它将找不到字体。

我使用 .otf 字体,尝试 .ttf 得到相同的结果。我尝试清理项目,重新启动 Xcode,从手机中删除应用程序等。我在 iOS 12 上测试,Xcode 是 10.1。还在模拟器、iPhone X 和 iPhone SE(10.2) 上进行了尝试。

任何人都有类似的问题或知道为什么会发生这种情况。

【问题讨论】:

    标签: ios swift xcode fonts


    【解决方案1】:

    解决了。在 Info.plist 文件中添加字体时,它只添加到一个目标,而不是全部。所以只需点击目标,转到信息并在那里添加字体。

    【讨论】:

      【解决方案2】:

      不完全确定为什么它不起作用。最好的猜测是,也许你给它起了个名字或引用了它,而代码中的名字实际上并不是名字。你可以这样做

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

      打印出所有字体并查看它是否显示在代码中。如果它在 IB 中,它应该以编程方式可用。我会运行它,看看你的字体是否出现。

      【讨论】:

      • 是的,如果我在 IB 中拥有它们,我在此处拥有它们,如果它们不在 IB 中,它们就不在此处。不知道为什么或如何。
      猜你喜欢
      • 2012-02-07
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2012-05-10
      • 2023-03-18
      相关资源
      最近更新 更多