NSFontAttributeName изменилось на String

Я пытаюсь правильно нарисовать навигационную панель, мне нужно изменить шрифт на helvetica neue с размером точки 19. Я когда-либо использовал этот код, но я заметил, что теперь это не работает:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)]

это происходит потому, что тип NSFontAttributeName изменился на String, я попытался исправить его с помощью

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: "HelveticaNeue-Light, 19"]

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

Ответ 1

Конструктор UIFont возвращает необязательный (UIFont?), который вы должны распаковать для использования. Добавьте !, если вы уверены, что имеете правильное имя шрифта:

navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "HelveticaNeue-Light", size: 19)!]

Ответ 2

С Swift 4 NSFontAttributeName устарело, вы можете использовать значения NSAttributedStringKey для установки атрибутов.

if let fontStyle = UIFont(name: "HelveticaNeue-Light", size: 19) {
  navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.font: fontStyle]
}

Для получения дополнительных опций для NSAttributedStringKey вы можете перейти по этой ссылке https://developer.apple.com/documentation/foundation/nsattributedstringkey/