Как загрузить шрифт iOS 13 по умолчанию, используя имя шрифта? - PullRequest
0 голосов
/ 05 ноября 2019

У меня странная проблема с системным шрифтом 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)
        }

    }

1 Ответ

2 голосов
/ 05 ноября 2019

Вы можете сохранить имя несистемного шрифта, но если это системный шрифт, единственное, что вам разрешено хранить, это тот факт, что это системный шрифт. Это прекрасная возможность для союза:

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