Пользовательский шрифт в ios не работает
Я хочу использовать HelveticaNeue-UltraLight в моем приложении ios. Я добавляю файл шрифта в качестве ресурса в свой проект и добавляю ключ "Шрифты, предоставленные приложением" в файле plist. Имя файла - HelveticaNeue.dfont, и я добавил его в массив ключей.
Когда я проверяю доступные шрифты, я вижу это сейчас...
NSArray *fonts = [UIFont fontNamesForFamilyName:@"Helvetica Neue"];
for(NSString *string in fonts){
NSLog(@"%@", string);
}
1-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-Bold
2011-07-08 17:32:57.866 myApp[5159:207] HelveticaNeue-CondensedBlack
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue-Medium
2011-07-08 17:32:57.867 myApp[5159:207] HelveticaNeue
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-Light
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-CondensedBold
2011-07-08 17:32:57.868 myApp[5159:207] HelveticaNeue-LightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLightItalic
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-UltraLight // HERE IT IS!
2011-07-08 17:32:57.869 myApp[5159:207] HelveticaNeue-BoldItalic
2011-07-08 17:32:57.870 myApp[5159:207] HelveticaNeue-Italic
Но когда я пытаюсь получить его с помощью [UIFont fontWithName: @ "HelveticaNeue-UltraLight" size: 12] Я просто получаю HelveticaNeue-Light..
У меня нет никаких ошибок или предупреждений.
Помогите пожалуйста!
Ответы
Ответ 1
Мало того, что файл необходимо добавить в проект, но его нужно добавить и в цель.
Иногда (как и в моем случае) при перетаскивании файла ".ttf" в Xcode "добавление в цель" не проверяется. Это означает, что файл действительно отображается в вашем проекте, но он не встроен в приложение.
Чтобы убедиться, что это:
- Нажмите на название проекта (левая панель)
- Затем на целевой (средняя панель)
- Затем "Сформировать фазы" (третья вкладка в правой панели)
- Затем "Копировать ресурсы Bundle"
Вы должны увидеть файл шрифта в этом списке.
Ответ 2
Я думаю, что у вас такая же проблема: у меня ошибка в iOS, где он не может использовать более двух шрифтов из одного семейства.
См. запись в блоге для получения более подробной информации и решения: http://www.pixeldock.com/blog/uifont-problem-when-using-more-than-2-custom-fonts-of-the-same-font-family/
Ответ 3
Откройте приложение "Шрифтовая книга". Если вы сами установили шрифты, перейдите к пользователю, найдите нужные шрифты и используйте имя шрифта PostScript в проекте xcode.
Он должен работать даже для разных вариантов шрифта одного семейства.
Ответ 4
после добавления файла Font в Bundle
"Шрифт, предоставленный приложением" , нажмите на стрелку вниз
и введите имя шрифта с расширением
Ответ 5
Он работает с разными вариантами одного и того же шрифта (даже в IOS 8). Я отправлю свою ошибку на случай, если у кого-то будет такая же проблема...
Я использовал имя файла шрифта вместо имени шрифта.
Полезным решением является печать всех доступных шрифтов и поиск того, что я использовал.
В Swift будет:
for fontFamilyNames in UIFont.familyNames() {
for fontName in UIFont.fontNamesForFamilyName(fontFamilyNames) {
print("FONTNAME:\(fontName)")
}
}
Я нашел этот полезный учебник в: Код с Крисом
Ответ 6
Хотя это, вероятно, не поможет OP, это может быть полезно другим.
С iOS 5 автоматически включается Helvetica Neue
; вам не нужно добавлять этот настраиваемый шрифт в пакет. Это даже возможно использовать это семейство шрифтов непосредственно из Interface Builder, что очень удобно.
Ответ 7
Попробуйте это, это также будет полезно для вас.
[compete_Label setFont:[UIFont fontWithName:@"Helvetica-Bold" size:12]];
Ответ 8
Попробуйте с пробелами:
[UIFont fontWithName:@"Helvetica Neue UltraLight" size:12];
Смотрите Некоторые шрифты не отображаются?
Ответ 9
В итоге я купил шрифт Helvetica Neue UltraLight от третьей стороны, добавив его без проблем.
Ответ 10
Чтобы использовать пользовательские шрифты в iOS, просто добавьте свои шрифты, перетащив их в свой проект. Упомяните массив имен шрифтов с расширением в Info.plist с ключом "Шрифты, предоставляемые приложением". Затем распечатайте все фамилии шрифтов, используя следующий код:
for (NSString* family in [UIFont familyNames])
{
DebugLog(@"FONT FAMILY: %@", family);
for (NSString *name in [UIFont fontNamesForFamilyName: family])
{
DebugLog(@" %@", name);
}
}
Консольная печать:
Arial Hebrew
ArialHebrew-Bold
ArialHebrew-Light
ArialHebrew
Calibri
Calibri-Bold
Calibri
Грузия
Грузия-BoldItalic
Грузия-Bold
Грузия-Italic
Грузия
Затем из консоли вы получите фактические имена шрифтов (как указано выше). Используйте ниже код для создания шрифта -
В основном тексте:
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)fontName, fontSize, NULL);
В UIKit:
UIFont *font = [UIFont fontWithName:fontName size:10];
Примечание: здесь fontName = @ "Calibri-Bold" не имеет расширения.
Ответ 11
Потратив часы, я узнал, что имя для шрифта, который нам нужно добавить, это не имя файла шрифта, а фактическое имя шрифта. Я пытался включить файл шрифта bonveno.ttf. Я включил имя файла вместе с расширением в info.plist и смог увидеть шрифт в списке Копировать ресурсы ресурсов. Мой код был похож на
self.label.font = [UIFont fontWithName:@"bonveno" size:30];
что вызывало проблему. Затем я дважды щелкнул файл шрифта с Finder, чтобы просмотреть предварительный просмотр шрифта. В то время я заметил имя шрифта в окне предварительного просмотра как BonvenoCF. Поэтому я добавил это имя в код, например
self.label.font = [UIFont fontWithName:@"BonvenoCF" size:30];
Работал как шарм!! Не могу жить без этого симпатичного шрифта в моих приложениях.