Swift - fontDescriptor возвращает NIL при создании шрифта для курсива в iOS 12 - PullRequest
3 голосов
/ 26 октября 2019

Я некоторое время боролся за это fontDescriptor.withSymbolicTraits, оно возвращает ноль всякий раз, когда я пытаюсь использовать Жирный или Курсив .

Я использую этот код ниже:

func withTraits(traits:UIFontDescriptor.SymbolicTraits) -> UIFont {
    let descriptor = fontDescriptor.withSymbolicTraits(traits)
    return UIFont(descriptor: descriptor!, size: 0) //size 0 means keep the size as it is }

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

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

Но приложение останавливается и показывает эту ошибку (это указывает на fontDescriptor.withSymbolicTraits):

Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения

Я также пробовал этот код (который работает на других разработчиках как то, что ячитать онлайн):

    var isBold: Bool {
        return fontDescriptor.symbolicTraits.contains(.traitBold)
    }

    var isItalic: Bool {
        return fontDescriptor.symbolicTraits.contains(.traitItalic)
    }

    func setBoldFnc() -> UIFont {
        if(isBold) {
            return self
        } else {
            var fontAtrAry = fontDescriptor.symbolicTraits
            fontAtrAry.insert([.traitBold])
            guard let fontAtrDetails = fontDescriptor.withSymbolicTraits(fontAtrAry) else { return self }
            return UIFont(descriptor: fontAtrDetails, size: 0)
        }
    }

    func setItalicFnc()-> UIFont {
        if(isItalic) {
            return self
        } else {
            var fontAtrAry = fontDescriptor.symbolicTraits
            fontAtrAry.insert([.traitItalic])
            guard let fontAtrDetails = fontDescriptor.withSymbolicTraits(fontAtrAry) else { return self }
            return UIFont(descriptor: fontAtrDetails, size: 0)
        }
    }

Кто-нибудь испытывал это в iOS 12 и выше?

Я также читал, что в iOS 8 была ошибка, связанная с этим, но говорит, что это было исправлено в более поздней версии:

https://code -examples.net / en/ q / 18c6177

Дескриптор шрифта возвращает nil в iOS 8

* ПРИМЕЧАНИЕ : я использовал только пользовательский шрифт "-Regular" файл. Потому что некоторые шрифты не имеют стиля шрифта "-Italic" или "-Bold".

Пример: шрифт Archivo Black и шрифт Oswald

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