Пользовательский шрифт не работает программно в 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

Три шага:

  1. Добавьте файл шрифта SourceSansPro-Regular.otf в свой проект, убедитесь, что вы выбрали цель в "Добавить к целям".

enter image description here

Перейдите к целевой фазе сборки и убедитесь, что она находится в разделе Копировать ресурсы комплекта. Если нет, добавьте его.

enter image description here



2. Перейти к цели Информация. Добавьте новую запись Шрифт, предоставленный приложением, затем добавьте новый элемент с этим значением SourceSansPro-Regular.otf.

enter image description here



  1. В окне поиска дважды щелкните файл Philosopher-Regular.ttf, он может попросить вас установить шрифт в книгу шрифтов.

  2. Откройте приложение 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

enter image description here (1) Сначала выберите папку "Шрифт", затем убедитесь, что она выбрана.

Ответ 4

Если вы получаете шрифт в раскадровке, но не в семействе шрифтов и не можете установить его программно, то причина в том, что Xcode, возможно, не скомпилировал шрифт. Чтобы решить это:

  1. Установите требуемый шрифт (скажем, Roboto Bold) в качестве шрифта любого элемента интерфейса на раскадровке E.g UILabel.
  2. Запустите проект
  3. Теперь проверьте названия семейства шрифтов. Имя нужного шрифта (скажем, Roboto Bold) появилось бы в нем.
  4. Теперь вы можете установить необходимый шрифт (скажем, Roboto Bold) программно :)