Пользовательский шрифт 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))
}
}
- Попытка установить шрифт в коде, и он сработал.
Код, который я использовал:
textLabel?.font = UIFont(name: "BebasNeueRegular", size: 14)
- Но я не могу установить его в построителе интерфейса. Любая идея?
Скриншоты:
![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.
Я действительно не понимаю, почему это происходит.
Разве 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 и их повторное добавление устраняет проблему (до следующего раза).