首页 > 解决方案 > 如何使用字体名称加载 iOS 13 默认字体?

问题描述

我对 iOS 13 系统字体有一个奇怪的问题。我正在尝试使用字体名称加载 iOS 默认字体 San Francisco。但由于一些 iOS 错误,它正在加载一些其他字体,如 Times New Roman。我在这里这里看到了一些这样的问题。但在我的情况下,我必须加载带有名称的字体,因为我正在使用实用程序类在应用程序委托中全局设置字体名称。有没有办法在 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)
        }

    }

标签: swiftfontsios13xcode11

解决方案


您可以存储非系统字体的名称,但如果它是系统字体,那么您唯一可以存储的就是它是系统字体这一事实。这是工会的绝佳机会:

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))

推荐阅读