在iOS 13之前,我使用SFUIDisplay字体。
UIFont(name: ".SFUIDisplay-Light", size: UIFont.systemFontSize)
但是在iOS 13上它不起作用。 iOS 13系统字体是什么?
答案 0 :(得分:4)
这个错误是BS。解决此问题的唯一方法是直接使用systemFont(ofSize:weight:)
方法。再次,您无法使用方法UIFont(name:size:)
获取系统字体,出于某些有趣的原因,您将仅获取Times New Roman。苹果开发人员一定在和我们搞混。因此,对于上面的原始问题,您必须使用以下代码:
UIFont(systemFont:UIFont.systemFontSize, weight: .light)
对于我来说,我遇到了一个错误,该错误为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)
}
}
答案 1 :(得分:1)
font-family:“。SFCompactText-Regular”; font-weight:正常;字体样式:正常
答案 2 :(得分:0)
如果您打算使用系统字体,则不必担心它的名称,而应让系统为您完成。
let font = UIFont.systemFont(ofSize: UIFont.systemFontSize)
这时,只要系统字体更改,它就会自动更新。
此外
我使用了很多自定义字体。我需要做
实际上,您可以在不提及字体名称的情况下使用系统字体。例如,您可以实现一个函数,该函数返回正确的字体为:
func getFont(name: String = "", size: CGFloat = UIFont.systemFontSize) -> UIFont {
// system font
let defaultFont = UIFont.systemFont(ofSize: UIFont.systemFontSize)
if name.isEmpty {
return defaultFont
}
return UIFont(name: name, size: size) ?? defaultFont
}
要使用系统字体,请命名为:getFont()
。否则,请提及字体名称来调用它:getFont(name: ".SFUIDisplay-Light")
。
但是,您可能会考虑执行以下操作来获取系统字体名称,然后使用它:
let systemFontName = UIFont.systemFont(ofSize: UIFont.systemFontSize).fontName
getFont(name: systemFontName)
我会说这毫无意义,因为UIFont.systemFont
会自动检测系统字体名称而无需提及。
答案 3 :(得分:0)
它是“ 旧金山(SF)Pro 和紧凑”字体。您可以在这里https://developer.apple.com/fonts/
进行检查答案 4 :(得分:-1)
使用systemFont(ofSize: CGFloat) -> UIFont
创建字体。
然后获得该字体的fontName
和familyName
。
打印以上内容,您将获得当前iOS的答案;因此,请在iOS 13上运行它。