Пользовательский шрифт Xcode 8 не отображается в построителе интерфейса

Я пытаюсь использовать собственный шрифт (Bebas Neue) в моем приложении iOS. Я сделал следующие шаги:

  • Скопируйте файлы .otf в проект.
  • Подтвердить, что файлы .otf задали проект как целевую.
  • Добавлены файлы .otf в "Шрифты, предоставленные приложением" в plist.
  • В фазах сборки, файлы .otf находятся в разделе "Ресурсы копирования ресурсов".
  • Установите шрифт на моем Mac.
  • Попробуйте распечатать все доступные шрифты, но я не вижу свой собственный шрифт.

Код, который я использовал:

for name in UIFont.familyNames() {
  println(name)
  if let nameString = name as? String
  {
    println(UIFont.fontNamesForFamilyName(nameString))
  }
}
  1. Попытка установить шрифт в коде, и он сработал.

Код, который я использовал:

textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
  1. Но я не могу установить его в построителе интерфейса. Любая идея?

Скриншоты:

Шрифт Font-List

Ответ 1

Попробуйте выполнить следующие шаги: Код проверен в Swift 3.

Шаг 1: добавьте свой собственный шрифт в свой проект (убедитесь, что Добавить в цель       ). Я использую шрифт "PermanentMarker.ttf", "Pecita.otf" и "AROLY.ttf" в качестве тестового шрифта.

Примечание: Поддерживающий шрифт Тип ttf и otf (оба типа шрифтов должны работать)

Шаг 2: измените файл application-info.plist.       Добавьте ключ "Шрифты, предоставляемые приложением", в новую строку и добавьте "PermanentMarker.ttf" в качестве нового элемента в массиве " Шрифты, предоставляемые приложением".

Ваш plist должен выглядеть следующим образом

введите описание изображения здесь

Теперь шрифт будет доступен в Interface Builder. Чтобы использовать пользовательский шрифт в коде, нам нужно ссылаться на него по имени, но имя часто не совпадает с именем файла fonts

Теперь вы можете получить доступ к пользовательскому шрифту из вашего диспетчера viewController. Я тестирую шрифт, помещая UIlabel в раскадровку, как показано ниже.

Обновление 2: Working Solution

После этого импортируйте свой собственный шрифт и обновите свой plist.select label из storyBoard, goto Attributes Inspector в разделе label > Text type > выберите Attributed и выберите custom font из списка.

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Вывод:

введите описание изображения здесь

Обновление 1

Если ваш пользовательский шрифт еще не указан в Xcode font list.check связанная ссылка на вашу проблему

Примечание.. Тем не менее, вы можете назначить BebasNeue или custom font программно на ваш ярлык или кнопку и т.д., даже если он не отображается в вашем interface Builder. Если у вас возникли проблемы с установкой шрифта на ваш объект programatically.try ниже метода.

Назначить шрифт UILabel:

    label?.font = UIFont(name: "BebasNeue", size: 35) // Set to any size

Назначить шрифт UIButton:

    button.titleLabel?.font = UIFont(name: "BebasNeue", size: 35)

Назначить шрифт UITextField:

    textField.font = UIFont(name: "BebasNeue", size: 25) 

Назначить шрифт UINavigationBar:

    navigationController?.navigationBar.titleTextAttributes = [NSFontAttributeName: UIFont(name: "BebasNeue", size: 25)!, NSForegroundColorAttributeName: UIColor.red]

Назначить шрифт UIToolBar:

    UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "BebasNeue", size: 25.0)!], for: UIControlState.normal)

Вывод:

введите описание изображения здесь

Ответ 2

При использовании того же шрифта (Bebas Neue), я испытываю ту же проблему: шрифт не отображается в списке шрифтов для элементов управления Plain.

Он используется для элементов управления Attributed, как описано в обновлении 2 в посте Joes, но вы фактически меняете attributedText вместо обычного text, что может привести к нежелательному поведению. Например, вам нужно будет возиться с NSMutableAttributedString, чтобы изменить цвет текста или текста во время выполнения.

Я провел некоторое расследование по этому вопросу. Я использовал FontLab Studio, чтобы изменить шрифт и выполнить некоторые тесты. Я использовал Bebas Neue версии 1.400 (от 15 сентября 2014 года) от dafont.com.

  • Возможно, файл шрифта был каким-то образом поврежден. Восстановлено как .otf и .ttf: Не работает.
  • Возможно, мета-данные шрифта были повреждены. Скопировал все глифы на новый шрифт и назвал его Bebas Neue: Не работал.
  • Я переименовал шрифт из Bebas Neue в BN: Он работает! Но почему?
  • Возможно, вы не можете использовать "Neue" в имени шрифта (поскольку Helvetica Neue был системным шрифтом iOS до iOS 8). Переименован шрифт в Test Neue: Все еще работает.
  • Может быть, вы не можете использовать "Bebas" в имени шрифта? Переименован шрифт в Bebas: Все еще работает.
  • Что... Чтобы быть уверенным, я изменил имя шрифта на Bebas Neue: Не работает снова.
  • Я также попробовал BebasNeue: И не работал.
  • Затем я сменил имя на Bebas Neue. Что бы ни было: Он работает.

    Bebas Neue What whatever

Я действительно не понимаю, почему это происходит. Разве Apple или Xcode не хотят, чтобы вы использовали "Bebas Neue" или "BebasNeue" в интерфейсе Builder? У меня был обычный Bebas Neue. Может быть, ссылка испорчена? Я действительно не могу сказать. Возможно, кто-то из чистой системы может попробовать, если Bebas Neue работает в своем Xcode.

В любом случае, я достиг своей цели: возможность использовать Bebas Neue (я назвал окончательную версию "Bebas Neue MyAppName" ) для Plain стилизованных этикеток и кнопок, поэтому я могу разработать свое приложение как есть и не делать нужно скрутить с атрибутами строк.

Ответ 3

Его легко и просто now- Протестировано в Xcode 10 и swift 5

Шаги, чтобы добавить шрифт в ваш Xcode

Выберите свой UILabel, UITextField или что-то еще в разделе шрифтов и следуйте

Шаг 1

Выберите меню настроек в левом углу экрана выбора шрифта. И выберите вариант диспетчера шрифтов.

enter image description here

Шаг 2

Нажмите на кнопку добавления, как отмечено ниже.

enter image description here

Шаг 3

Выберите папку с вашим шрифтом. Он будет загружен в список шрифтов XCode.

Шаги по добавлению шрифтов в ваш проект

Не забудьте добавить описание в свой список с помощью ключевых Fonts provided by application и поместить файлы шрифтов в ресурсы пакета копий в соответствии с настройками целевого объекта проекта.

Да! вот оно.. приятное

Ответ 4

Наконец, я нашел основную причину проблем со шрифтами Bebas Neue.

Я не помню, где я скачал шрифты, но шрифты Bebas Neue противоречивы.

Скачать то есть приложение под названием Typelight

Не открывай Regular, но то есть жирный шрифт с Typelight.

enter image description here

Вам нужно исправить большинство шрифтов Bebas Neue.

Ответ 5

Фактически вы можете просто перейти к атрибутным шрифтам, щелкнуть окно пользовательского шрифта. Щелкайте шестерню в левом верхнем углу и нажимайте на опцию управления шрифтами. Окно должно появиться и сверху, и должен быть знак плюса, чтобы вы могли добавлять шрифты. Просто выберите пользовательский шрифт, который вы загрузили, например, xyz.tff, а затем добавьте его.

Важно отметить, что файл ttf должен быть указан как в p-списке, так и в каталоге вашего проекта!

Ответ 6

Это была старая ошибка с Xcode 3.x:

есть ошибка/известная проблема с IB на XCode 3.x с нестандартными шрифтами и Interface Builder. Пользовательские шрифты обычно должны быть установлены программно (через [UIFont fontWithName:])

Есть некоторые работы, такие как с User Defined Runtime Attribute и categories.

Ответ 7

У меня была аналогичная проблема

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

Попытка решения, но ничего не работает для меня. Итак, вот мое решение, снова перейдя к предыдущему UILabel (уже добавлен новый шрифт) select- > label- > выберите новый добавленный шрифт. Проверьте другие элементы управления пользовательского интерфейса.

теперь он работает нормально.

Надеюсь, что это поможет newDevs...

Ответ 8

Это все еще повторяющаяся проблема для меня в Swift 4.2, даже без внесения каких-либо изменений, которые могли бы вызвать его.

Удаление файлов шрифтов из проекта Xcode и их повторное добавление устраняет проблему (до следующего раза).