iOS13的系统字体是什么?

Vla*_*lav 6 fonts ios swift

在iOS 13之前,我使用SFUIDisplay字体。

UIFont(name: ".SFUIDisplay-Light", size: UIFont.systemFontSize)

但是在iOS 13上它不起作用。iOS 13系统字体是什么?

Luc*_*hwe 6

这个bug太牛了。绕过它的唯一方法是systemFont(ofSize:weight:)直接使用该方法。又名,您无法使用该方法获取系统字体UIFont(name:size:),您只能出于某些有趣的原因获取 Times New Roman。苹果开发人员一定是在惹我们。因此,对于上面的原始问题,您必须使用以下内容:

UIFont(systemFont:UIFont.systemFontSize, weight: .light)
Run Code Online (Sandbox Code Playgroud)

对于我的情况,我遇到了这个错误,它进行了扩展UIFont以返回不同大小的相同字体,这必须与自定义字体和系统字体一起使用。为了让它在 xcode 11 ios 13 上工作,我不得不添加一个愚蠢的检查来查看是否fontName包含“.SF”。

extension UIFont {
    func forSize(_ pointSize: CGFloat) -> UIFont {
        if !fontName.contains(".SF"), let font = UIFont(name: fontName, size: pointSize) {
            return font
        }

        return UIFont.systemFont(ofSize: pointSize, weight: weight)
    }
}
Run Code Online (Sandbox Code Playgroud)


mea*_*ers -1

使用创建字体systemFont(ofSize: CGFloat) -> UIFont

然后获取该字体的fontNamefamilyName

打印上面的内容,你就得到了当前iOS的答案;所以在 iOS 13 上运行它。

  • @mskw 希望/假设您同意硬编码字体名称是不好的做法,那么您更好的选择是什么? (2认同)