Xcode не видит шрифт в коде, а только в IB - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть несколько шрифтов Montserrat в моем приложении, и мне нужно было добавить курсивную версию этого шрифта, я добавил их в project, target, info.plist и везде, где это необходимо.

Когда я печатаю названия шрифтов, я вижу только шрифт, который у меня был ранее

- 0 : "Montserrat-Regular"
- 1 : "Montserrat-Medium"
- 2 : "Montserrat-Light"
- 3 : "Montserrat-SemiBold"

Странно, когда я устанавливаю курсивный шрифт в IB для любой метки, тогда это отображается в коде

- 0 : "Montserrat-Regular"
- 1 : "Montserrat-Medium"
- 2 : "Montserrat-Light"
- 3 : "Montserrat-SemiBold"
- 4 : "Montserrat-LightItalic"
- 5 : "Montserrat-Italic"

Если у меня есть эти шрифты в IB UIFont (имя: "Montserrat-LightItalic", size: size) будет работать, но если я удалю его из IB, он не найдет шрифт.

Я использую шрифты .otf, пробовал .ttf с тем же результатом. Я пытался очистить проект, перезапустить Xcode, удалить приложение с телефона и т. Д. Я тестирую на iOS 12 и Xcode 10.1. Также пробовал на симуляторах iPhone X и iPhone SE (10.2).

Кто-нибудь имел подобную проблему или знает, почему это происходит.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

решаемая.При добавлении шрифта в файл Info.plist он был добавлен только к одной цели, а не ко всем.Так что просто нажал на цель, пошел к информации и добавил там шрифт.

0 голосов
/ 13 ноября 2018

Не совсем уверен, почему это не работает. Наилучшим потенциальным предположением является то, что, возможно, вы назвали это чем-то или ссылались на него, и имя в коде на самом деле не является именем. Вы можете сделать

UIFont.familyNames.forEach({ familyName in
        let fontNames = UIFont.fontNames(forFamilyName: familyName)
        print(familyName, fontNames)
    })

чтобы распечатать все шрифты и посмотреть, отображается ли это в коде. Если это в IB, это должно быть доступно программно. Я бы запустил это и посмотрел, появляются ли ваши шрифты.

...