我在iOS 13系统字体方面遇到了一个奇怪的问题。我正在尝试使用字体名称加载iOS默认字体旧金山。但由于一些iOS错误,它正在加载一些其他字体,如Times New Roman。我在这里和这里很少看到这样的问题。但在我的情况下,我必须加载带有名称的字体,因为我正在使用一个Utility类在应用程序委托中全局设置字体名称。有没有办法在iOS 13中使用字体名称加载系统字体?
// Set font here
MUIConstats.shared.defaultFontRegularName = UIFont.systemFont(ofSize: 17).fontName
// Get font from here
class func appFontRegularOf(size: CGFloat)-> UIFont{
if let fontName = MUIConstats.shared.defaultFontRegularName {
return UIFont(name:fontName, size: size) ?? UIFont.systemFont(ofSize:size)
}else{
return UIFont.systemFont(ofSize:size)
}
}
您可以存储非系统字体的名称,但如果是系统字体,则唯一允许存储的就是它是系统字体。这是工会的绝佳机会:
enum WhatFont {
case system
case name(String)
func fontOfSize(_ sz:CGFloat) -> UIFont? {
switch self {
case .system: return UIFont.systemFont(ofSize: sz)
case .name(let name): return UIFont(name: name, size: sz)
}
}
}
测试:
let f1 = WhatFont.system
print(f1.fontOfSize(17))
let f2 = WhatFont.name("Georgia")
print(f2.fontOfSize(17))