在iOS 13上系统字体渲染成了Times New Roman

7

我有一些使用默认系统字体的UILabel。但是当我在安装了iOS 13.1的iPad或iPhone上安装我的应用程序时,字体会变成类似于Times New Roman的东西!为什么会发生这种情况?我确定标签的文本是纯文本,字体是System。我该如何解决这个问题?

附:我已经从苹果网站下载了所有SF字体,但还是没有成功!

3个回答

6
我找到了解决方案,问题在于检测当前标签字体。我进行了更改:
descriptions.font = UIFont(name: (descriptions.font?.fontName)!, size: 22)

to

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

问题解决了。

没有对我有帮助。 - Yaroslav Dukal
是的,这并不能解决很多情况。总的来说,当要求特定权重和大小组合的系统字体时,会出现无法渲染的情况,而 Times New Roman 则成为了后备方案。 - TahoeWolverine

0

使用UIFontDescriptor

我在iOS 13上遇到了同样的问题。通过使用fontDescriptor而不是fontName来解决了这个问题。我在我的storyboard中有一个UILabel,通过IBOutlet连接到它的视图控制器,并将字体设置为文本样式-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 :)"

这样它将选择你在Storyboard中设置给标签的字体,你不需要硬编码字体名称。


-1

看起来苹果正在推动使用带有权重的初始化器。使用名称传递似乎会破坏它".SFUI-Regular"。

解决此问题的方法是像这样使用带有权重的函数:UIFont(systemFont:UIFont.systemFontSize, weight: .regular)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接