Swift UIFontからWeightを取得してみる

2021年8月7日

どうやって取得出来る?

UIFontから取得するメソッドはない。(私が気づいていない可能性もありますが)
色々な値を出力してみた。
UIFont.fontDescriptor.fontAttributes[.textStyle]で取得できそうなことが分かった。
文字列が取得出来る。

Exampleコード

func fontToWeight(font: UIFont) -> Int {
    var result: Int = 0
    if let weightName = font.fontDescriptor.fontAttributes[.textStyle] as? String {
        switch weightName {
        case "CTFontUltraLightUsage":
            result = 0
        case "CTFontThinUsage":
            result = 1
        case "CTFontLightUsage":
            result = 2
        case "CTFontRegularUsage":
            result = 3
        case "CTFontMediumUsage":
            result = 4
        case "CTFontDemiUsage":
            result = 5
        case "CTFontBoldUsage":
            result = 6
        case "CTFontHeavyUsage":
            result = 7
        case "CTFontBlackUsage":
            result = 8
        default:
            result = 0
        }
    }
    return result
}

SwiftSwift

Posted by shi-n