Сделать текст курсивом без шрифта "-Italic" в Swift - PullRequest
0 голосов
/ 28 октября 2019

Как сделать текст курсивом, если используемый мной нестандартный шрифт имеет только -Регулярный шрифт?

Я использую это расширение, чтобы сделать его курсивным, но происходит сбой в части 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)

Инструменты:

  • Версия устройства: iOS 12.3.1
  • Версия Xcode: 10.2.1
  • macOS: 10.14.5

Ответы [ 2 ]

0 голосов
/ 28 октября 2019
let descriptor = fontDescriptor.withSymbolicTraits(traits)

Вышеприведенная строка возвращает необязательный дескриптор шрифта, который означает, что он не существует для всех шрифтов.

Я думаю, вам нужен соответствующий стиль шрифта (курсив ), установленный на вашем компьютере для семейства шрифтов Archivo Black . Загрузите и установите .ttf файл для курсивного варианта шрифта Archivo Black.

Вы можете использовать что-то подобное, чтобы избежать сбоя.

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
    }
}
0 голосов
/ 28 октября 2019

В раскадровке выберите текстовое представление или метку и измените его тип с простого на атрибутивный, выделите текст, щелкните левой кнопкой мыши на нем, выберите шрифт, и под шрифтом вы найдете курсив. Вы можете видеть это на этой картинке enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...