"可可触摸静态库"中的自定义字体

Par*_*ram 2 cocoa-touch objective-c static-libraries custom-font ios

我正在创建一个框架("Cocoa Touch Static Library")供其他iOS开发人员使用.现在我将按照此处的步骤我的框架内使用自定义字体.步骤2在Info.plist文件中设置"UIAppFonts".但是在框架的情况下,Info.plist将由开发人员ie)提供.所以我的框架用户只能在他们的应用程序的plist文件中设置"UIAppFonts"属性,或者有没有办法在Framework中自己设置属性,以便我的框架的每个用户都不需要设置"UIAppFonts"属性?请指教,谢谢.

Chr*_*and 5

如您所说,您无法在静态库中设置UIAppFonts.根据您将要使用的内容,您可能不需要它.

作为一种解决方法,您可以在应用程序生命周期的任何时候动态加载字体,例如在静态库中的一些早期调用的init/setup方法中.

请参阅Marco 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);
Run Code Online (Sandbox Code Playgroud)