首页 > 解决方案 > 在 Swift 中使文本斜体没有“-Italic”字体文件

问题描述

如果我使用的自定义字体只有 -Regular 字体,我如何使文本斜体?

我使用此扩展使其斜体,但它在 fontDescriptor 部分崩溃:

func withTraits(traits:UIFontDescriptor.SymbolicTraits) -> UIFont {
    let descriptor = fontDescriptor.withSymbolicTraits(traits)
    return UIFont(descriptor: descriptor!, size: 0) 
}

func bold() -> UIFont {
    return withTraits(traits: .traitBold) }

func italic() -> UIFont {
    return withTraits(traits: .traitItalic) }

用法:

let s = UIFont(name:"Archivo Black", size: 20.0).italic()
print("Output: ", s)

工具:

标签: iosswiftfonts

解决方案


let descriptor = fontDescriptor.withSymbolicTraits(traits)

上面的行返回一个可选的字体描述符,这意味着它并不适用于所有字体。

我认为您需要在您的机器上为 font-family Archivo Black安装相应的字体样式(斜体) 。下载并安装Archivo Black 字体的斜体变体的.ttf文件。

您可以使用类似的方法来避免崩溃。

extension UIFont {
    func withTraits(traits: UIFontDescriptor.SymbolicTraits) -> UIFont {
        if let descriptor = fontDescriptor.withSymbolicTraits(traits) {
            // Initialize a new instance of UIFont with desired symbolic trait if exists
            return UIFont(descriptor: descriptor, size: self.pointSize)
        }
        // Fall back to default version of the font
        return self
    }
}

推荐阅读