SwiftUI:支持粗体和斜体的自定义字体

时间:2021-06-10 20:31:13

标签: ios swift fonts swiftui

我想创建一个自定义字体以在我的 SwiftUI 应用程序中使用。我创建了一个 Font 扩展:

static var acBody1: Font {
    return .custom("SuisseIntl", size: 17, relativeTo: .body)
}
static var acBody1Semibold: Font {
    return .custom("SuisseIntl-SemiBold", size: 17, relativeTo: .body)
}

但与其为半粗体引用一个单独的字体,我宁愿做类似的事情......

Font.acBody1.semibold()

...类似于使用原生字体的方式。我在 UIKit 中设置了这样的东西。我引用了正在使用的字体的大小,然后返回该大小的半粗体字体。但据我所知,SwiftUI 字体一旦创建就无法获得 pointSize。所以我不确定如何进行 semibold 修饰符链接。

这可能吗?

1 个答案:

答案 0 :(得分:1)

这有帮助吗?

extension Font {
    
    static var acBody1: Font {
        return .custom("SuisseIntl", size: 17, relativeTo: .body)
    }
    public func semibold() -> Font {
        switch self {
        case .acBody1:
            return .custom("SuisseIntl-SemiBold", size: 17, relativeTo: .body)
        default:
            return self
        }
    }
}

建议: 根据用例,您可以将 default 情况更改为返回 self.weight(.semibold),以便 semibold() 函数始终返回 semi-bolded 字体。