我有一些使用默认系统字体的UILabel
。但是当我在安装了iOS 13.1的iPad或iPhone上安装我的应用程序时,字体会变成类似于Times New Roman
的东西!为什么会发生这种情况?我确定标签的文本是纯文本,字体是System
。我该如何解决这个问题?
附:我已经从苹果网站下载了所有SF字体,但还是没有成功!
descriptions.font = UIFont(name: (descriptions.font?.fontName)!, size: 22)
to
descriptions.font = UIFont.systemFont(ofSize: 22)
使用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 :)"
let font = UIFont.init(descriptor: lblText.font.fontDescriptor, size: 50.0)
lblText.font = font
lblText.text = "Times Coding :)"
这样它将选择你在Storyboard中设置给标签的字体,你不需要硬编码字体名称。
看起来苹果正在推动使用带有权重的初始化器。使用名称传递似乎会破坏它".SFUI-Regular"。
解决此问题的方法是像这样使用带有权重的函数:UIFont(systemFont:UIFont.systemFontSize, weight: .regular)。