系统字体在iOS模拟器中不起作用

时间:2017-03-01 13:37:56

标签: swift xcode sprite-kit nsfont

我已经阅读了关于这个主题的大部分问题和答案,它们似乎都适用于自定义字体,而不是系统字体。

我使用Interface builder并在SpriteKit场景上有一个SKLabelNode,我将字体更改为'Lithos Pro'。它在IB中正确显示,但在模拟器中运行时会显示通用字体。我还以编程方式在场景中添加了一个UITextField,尝试使用相同的字体,但也没有。

据我所知,这是作为NSFont捆绑包的一部分,但只是为了确认我将TTF文件添加到项目中并将它们包含在我的目标资源中。仍然没有。

思想?

nameField = UITextField(frame: CGRect(x: view.center.x - 150,y:view.center.y - 25,width: 300, height: 50))
nameField.font = UIFont(name: "Lithos Pro Regular", size: 25)  //I've tried 'Lithos Pro, LithosPro, and Lithos Pro Regular'
nameField.textAlignment = .center
nameField.borderStyle = UITextBorderStyle.roundedRect
nameField.autocorrectionType = UITextAutocorrectionType.no
nameField.keyboardType = UIKeyboardType.default
nameField.returnKeyType = UIReturnKeyType.done
nameField.clearButtonMode = UITextFieldViewMode.whileEditing;
nameField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
view.addSubview(nameField)

1 个答案:

答案 0 :(得分:5)

要查看iOS中所有可用的系统字体,请转到iosfonts.com。另一种方法是打印UIFont.familyNames

我查了iosfonts.com,从iOS 9开始就没有一个名为Lithos Pro的字体。如果你在UIFont.familyNames找不到字体,那就意味着你的字体了using是一种自定义字体,不是由OS提供的。另一种可能性是您编写了整个字体名称而不是只写了姓氏。请尝试删除Regular一词。

如果 使用自定义字体并将字体文件添加到项目中,则需要在Info.plist中添加一些内容才能使其正常工作。在Info.plist文件中创建一个新的KVP。密钥称为“由应用程序提供的字体”或类似的东西。只需在列表中向下滚动即可找到它。之后,Xcode将自动创建一个数组作为密钥的值。然后只需添加您的字体文件名称,扩展名为数组中的唯一项目。