Пользовательский шрифт не работает программно в Swift
Я выполнил шаг к добавлению пользовательских шрифтов в xcode на swift изо дня в день и
пользовательские шрифты, но я не могу программно установить этот шрифт в ярлыке приложения.
var labeladd = UILabel(frame: CGRectMake(40, 50, 70, 22))
// label.center = CGPointMake(160, 284)
/// labeladd.font=UIFont.boldSystemFontOfSize(15)
labeladd.font = UIFont(name:"Source Sans Pro",size:15)
labeladd.textColor=UIColor.blackColor()
labeladd.textAlignment = NSTextAlignment.Center
labeladd.text = "this is custom fonts"
myview.addSubview(labeladd)
Ответы
Ответ 1
Допустим, вы хотите добавить этот шрифт: SourceSansPro-Regular.otf
Три шага:
- Добавьте файл шрифта
SourceSansPro-Regular.otf
в свой проект, убедитесь, что вы выбрали цель в "Добавить к целям".
![enter image description here]()
Перейдите к целевой фазе сборки и убедитесь, что она находится в разделе Копировать ресурсы комплекта. Если нет, добавьте его.
![enter image description here]()
2. Перейти к цели Информация. Добавьте новую запись Шрифт, предоставленный приложением, затем добавьте новый элемент с этим значением SourceSansPro-Regular.otf
.
![enter image description here]()
В окне поиска дважды щелкните файл Philosopher-Regular.ttf, он может попросить вас установить шрифт в книгу шрифтов.
Откройте приложение OS X Font Book, перейдите к шрифту и нажмите Command + i. Запишите имя PostScript и используйте это имя в своем коде Swift. В данном случае это SourceSansPro-Regular
.
![enter image description here]()
Итак, в вашем коде:
labeladd.font = UIFont(name:"SourceSansPro-Regular", size:15)
Ответ 2
Иногда имя шрифта не является именем вашего файла. Я пытался использовать шрифт NexaBook.otf с именем "NexaBook", и в конце проблема заключалась в том, что правильное имя шрифта - "Nexa-Book".
Чтобы проверить, что вы используете правильное имя, напишите этот код в viewDidLoad и проверьте имя шрифта:
for family: String in UIFont.familyNames
{
print(family)
for names: String in UIFont.fontNames(forFamilyName: family)
{
print("== \(names)")
}
}
В моем случае я получил:
...
Nexa
== Nexa-Book
Avenir Next
== AvenirNext-Medium
== AvenirNext-DemiBoldItalic
== AvenirNext-DemiBold
...
Я понял эту идею из Распространенных ошибок с добавлением пользовательских шрифтов в приложение для iOS, где вы можете найти отличное описание проблем, связанных с пользовательскими шрифтами.
Ответ 3
(1) Сначала выберите папку "Шрифт", затем убедитесь, что она выбрана.
Ответ 4
Если вы получаете шрифт в раскадровке, но не в семействе шрифтов и не можете установить его программно, то причина в том, что Xcode, возможно, не скомпилировал шрифт. Чтобы решить это:
- Установите требуемый шрифт (скажем, Roboto Bold) в качестве шрифта любого элемента интерфейса на раскадровке E.g UILabel.
- Запустите проект
- Теперь проверьте названия семейства шрифтов. Имя нужного шрифта (скажем, Roboto Bold) появилось бы в нем.
- Теперь вы можете установить необходимый шрифт (скажем, Roboto Bold) программно :)
Ответ 5
Если вы добавляете пользовательский шрифт в платформу, вам необходимо вручную загрузить шрифт в делегате приложения перед его использованием.
Xcode: использование пользовательских шрифтов внутри динамического фреймворка