我有一些UILabel
使用默认系统字体。但是,当我在装有iOS 13.1的iPad或iPhone上安装我的应用程序时,字体更改为Times New Roman
之类的字体!为什么会这样?我确定标签的文本为纯文本,字体为System
。我该如何解决这个问题?
PS:我已经从Apple网站下载了所有SF字体,仍然没有运气!
答案 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)。