系统字体在iOS 13上呈现为Times New Roman

时间:2019-10-04 12:31:48

标签: ios xcode

我有一些UILabel使用默认系统字体。但是,当我在装有iOS 13.1的iPad或iPhone上安装我的应用程序时,字体更改为Times New Roman之类的字体!为什么会这样?我确定标签的文本为纯文本,字体为System。我该如何解决这个问题?

PS:我已经从Apple网站下载了所有SF字体,仍然没有运气!

3 个答案:

答案 0 :(得分:2)

我找到了解决方案,问题在于检测当前标签的字体。我改变了:

descriptions.font = UIFont(name: (descriptions.font?.fontName)!, size: 22)

descriptions.font = UIFont.systemFont(ofSize: 22)

问题解决了。

答案 1 :(得分:0)

使用UIFontDescriptor

我在iOS 13上遇到了相同的问题。通过使用 fontDescriptor 而不是fontName修复了该问题。我的故事板上的UILabel通过IBOutlet连接到其视图控制器,其字体为 Text Styles-Callout

@IBOutlet weak var lblText: UILabel!

以下内容未按预期工作,并显示Times New Roman字体:

let font = UIFont.init(name: lblText.font.fontName, size: 50.0)!
lblText.font = font
lblText.text = "Times Coding :)"

使用UIFontDescriptor的解决方案:

let font = UIFont.init(descriptor: lblText.font.fontDescriptor, size: 50.0)
lblText.font = font
lblText.text = "Times Coding :)"

这样,它将在情节提要中选择您设置为标签的字体,而无需对字体名称进行硬编码。

答案 2 :(得分:-1)

似乎苹果公司正在努力使用带有重量的初始化程序。传递它的名称似乎会破坏它的“ .SFUI-Regular”。

解决方法是使用具有以下权重的函数:UIFont(systemFont:UIFont.systemFontSize,权重:.regular)。