Xcode在代码中看不到字体,而仅在IB中

时间:2018-11-13 14:17:36

标签: ios swift xcode fonts

我的应用程序中的蒙特塞拉特字体很少,需要添加斜体版本的字体,我将它们添加到了项目,目标,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(名称:“ Montserrat-LightItalic”,大小:大小)中具有这些字体,则可以使用,但是如果我从IB中删除它,则找不到该字体。

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

任何人都有类似的问题,或者知道为什么会这样。

2 个答案:

答案 0 :(得分:1)

已解决。在Info.plist文件中添加字体时,仅将其添加到一个目标,而不是全部。因此,只需点击目标,进入信息并在其中添加字体。

答案 1 :(得分:0)

不能完全确定为什么它不起作用。可能的最佳猜测是,您可能已对其进行了命名或引用,而代码中的名称实际上并不是名称。您可以

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

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