2013-02-13 2 views
2

Я создаю фреймворк («Cocoa Touch Static Library»), который будет использоваться другими разработчиками iOS. Теперь я собираюсь использовать собственный шрифт внутри моей рамки, следуя шагам here. Шаги 2 устанавливают «UIAppFonts» в файле Info.plist. Но в случае рамки Info.plist будет предоставлен разработчиком, т.е.). Таким образом, мои пользователи инфраструктуры могли установить свойство «UIAppFonts» в файле plist приложения или есть ли способ установить свойство внутри Framework, чтобы каждый пользователь моей структуры не должен был устанавливать свойство «UIAppFonts»? Прошу совета, спасибо.Пользовательский шрифт внутри «Cocoa Touch Static Library»

ответ

1

Вы можете предоставить пример plist или даже написать утилиту, которая выполняет этот параметр, обновив данный список свойств, но пользователям библиотеки нужно будет что-то сделать самостоятельно, либо обновив plist вручную, либо используя вашу утилиту. Вы не можете этого избежать.

+0

Большое спасибо @ Н2СО3 за быстрый ответ, я буду просить разработчиков, чтобы добавить «UIAppFonts» настройки в их файле PLIST. –

5

Как вы сказали, вы не можете установить UIAppFonts из своей статической библиотеки. В зависимости от того, что вы собираетесь использовать, вы, возможно, не нуждаетесь в этом.

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

Смотрите this учебник Марко Arment, код поставки ниже:

NSData *inData = /* your decrypted font-file data */; 
CFErrorRef error; 
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)inData); 
CGFontRef font = CGFontCreateWithDataProvider(provider); 
if (! CTFontManagerRegisterGraphicsFont(font, &error)) { 
    CFStringRef errorDescription = CFErrorCopyDescription(error) 
    NSLog(@"Failed to load font: %@", errorDescription); 
    CFRelease(errorDescription); 
} 
CFRelease(font); 
CFRelease(provider); 
+0

Не могли бы вы рассказать, что это такое? это данные файла font.ttf или otf или что-то еще. – ManiaChamp

+0

У меня нет моего кода передо мной, но это должны быть данные шрифта, считанные из фактического файла ttf/otf, да. Вы попробовали и потерпели неудачу? –

+0

Это прекрасно работает внутри нашей Cocoa Touch Framework. Загрузите файл шрифта следующим образом: NSString * fontPath = [[NSBundle bundleForClass: [ANYClassInYourFramework class]] pathForResource: @ "fontfilename" ofType: @ "ttf"]; NSData * fontData = [NSData dataWithContentsOfFile: fontPath]; –