在Swift中没有“ -Italic”字体文件的情况下使文本变为斜体

时间:2019-10-28 05:51:16

标签: ios swift fonts

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

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

Deny

用法:

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

工具:

  • 设备版本:iOS 12.3.1
  • Xcode版本:10.2.1
  • macOS:10.14.5

2 个答案:

答案 0 :(得分:0)

let descriptor = fontDescriptor.withSymbolicTraits(traits)

上面的行返回一个可选字体描述符,这意味着并非所有字体都存在。

我认为您需要在计算机上安装字体家族 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
    }
}

答案 1 :(得分:-1)

在情节提要中,选择文本视图或标签,并将其类型从纯文本更改为属性,然后选择文本,然后单击鼠标左键,选择字体,在字体下方您将看到斜体。你可以在这张照片中看到它 enter image description here