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

Posted

技术标签:

【中文标题】系统字体在 iOS 模拟器中不起作用【英文标题】:System font not working in iOS Simulator 【发布时间】:2017-03-01 13:37:55 【问题描述】:

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

我正在使用界面生成器并在 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)

【问题讨论】:

Lithos Pro Regular 不是系统字体。 【参考方案1】:

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

我检查了 iosfonts.com 并且在 iOS 9 中没有名为 Lithos Pro 的字体。如果您在 UIFont.familyNames 中也找不到该字体,则意味着您使用的字体是自定义字体字体,操作系统不提供。另一种可能性是您编写了整个字体名称而不仅仅是姓氏。尝试删除单词Regular

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

【讨论】:

钉在头上!我所缺少的只是 Info.plist KVP。添加后它可以完美运行。谢谢楼主!

以上是关于系统字体在 iOS 模拟器中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItem 外观代理设置字体属性在 iOS 11 中不起作用

删除边框顶部,更改字体系列,....在 Xamarin iOS 最新版本中不起作用

@media only screen and (orientation:portrait) 在 iOS 模拟器中不起作用?

反应本机 axios 请求在 IOS 模拟器中不起作用

使用 ffmpeg 提取的电视音频在 iOS 中不起作用(但在模拟器中起作用)

Xamarin iOS (9.2):手势在模拟器中不起作用