2013-09-25 4 views
4

Я придумал SO для подобных проблем, и большинство из них, похоже, говорят мне, что я, вероятно, забыл добавить шрифт в фазу сборки ресурсов копирования. Я также убедился, что оба шрифта являются частью цели сборки.Пользовательские шрифты iOS не отображаются на устройстве

У меня двойной, и тройной проверил это. Оба шрифта находятся на этапе копирования ресурсов, и оба они перечислены в plist.

plist

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

NSLog(@"%@", [UIFont fontNamesForFamilyName:@"DS-Digital"]); 
NSLog(@"%@", [UIFont fontNamesForFamilyName:@"Proxima Nova"]); 

Первые печатает «(» DS-Digital «Итальянский»), «что я и хотел, второй отпечаток» («ProximaNova-Regular») », также ожидалось.

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

[_estimateLabel setFont:[UIFont fontWithName:@"DS-Digital-Italic" size:50]]; 

или

[cell.mainLabel setFont:[UIFont fontWithName:@"ProximaNova-Regular" size:20]]; 

я что-нибудь не хватает? Я использую XCode 5 с iPad mini и iPhone 5C, оба iO 7.

ответ

17

Открыть шрифт в Fontbook (Он поставляется с вашим Mac). Убедитесь, что вы называете его имя после сценария, как здесь: enter image description here

Ее называли по @"HelveticaNeueCE-Thin"

Также убедитесь, что вы проверили имя вашего шрифта в «Добавить к целям:» когда вы добавили их в проект, если вы этого не сделали, они не будут скопированы в комплекте приложений, отправленном на ваш iDevice.

+0

Спасибо! Да, имена соответствуют имени PostScript в Fontbook.Оба файла шрифтов являются частью цели и в plist. Все еще не работает на устройствах. Просто симулятор. – jlindenbaum

+0

@jlindenbaum Это в случае со всеми шрифтами, или только этими двумя? –

+0

Proxima появляется, когда я печатаю семейство и доступные имена на устройстве, DS-Digital этого не делает. – jlindenbaum

0

Вы уверены, что получили правильное название шрифта? См. Это сообщение Can I embed a custom font in an iPhone application? для справки

+0

Да, названия шрифтов совпадают с названиями шрифтов. Шрифты также находятся в правильных целях. – jlindenbaum

0

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

// Load font 
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)[NSURL fileURLWithPath:@"/path/to/font.ttf"]); 
CGFontRef uiFont = CGFontCreateWithDataProvider(fontDataProvider); 
NSString * uiFontName = (__bridge NSString *)CGFontCopyPostScriptName(uiFont); 
CGDataProviderRelease(fontDataProvider); 
CFErrorRef error; 
CTFontManagerRegisterGraphicsFont(uiFont, &error); 
CGFontRelease(uiFont); 
UIFont *yourfont = [UIFont fontWithName:uiFontName size:20.0f]; 

Я угадывание XCode есть способ сделать это для вас, но это всегда вариант, если вы хотите просто фрагмент кода, который работает

+0

Это похоже на ужасную работу для пользовательского шрифта на ярлыке. У XCode есть более приятные способы сделать это, да. –

0

Выполнить это в вашем AppDelegate, чтобы увидеть, если семейство шрифтов и имя появляется при запуске на устройстве:

for (NSString *family in [UIFont familyNames]) { 
    NSLog(@"%@", family); 
    for (NSString *name in [UIFont fontNamesForFamilyName:family]) { 
     NSLog(@"\t%@", name); 
    } 
} 

Если появляются семейство шрифтов и имена DO и правильность написания, возможно, есть проблема с файлом шрифта ...? Просмотрите журналы устройств (или консоли), чтобы узнать, есть ли какие-либо ошибки с использованием файла.

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

+0

В моем вопросе вы можете видеть, что шрифт присваивается меток с помощью 'setFont: [UIFont fontNamed: @" "]' Когда я запускаю это на симуляторе, я вижу оба шрифта, напечатанных на консоли. На устройстве я вижу proxima, но я не вижу DS-Digital, несмотря на то, что оба находятся в ресурсе копирования и нацелены. – jlindenbaum

+0

Извините, я понял, что вы устанавливаете шрифт на ярлыки. Мой вопрос был о том, где в вашем коде вы устанавливаете шрифты. В 'viewDidLoad:', 'viewWillAppear:'? Вы получили этот шрифт от dafont? Я просто скачал этот шрифт (DS Digital), переименовал его в digifont-italic.ttf и включил его в приложение без проблем. Если он не отображается в вашем списке шрифтов, должна быть разбивка фазы сборки или plist. Попробуйте удалить шрифт и попробуйте добавить его снова. В противном случае создайте новый проект и повторно импортируйте все. – Corey

Смежные вопросы