2

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

4

2 回答 2

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);
于 2014-02-23T23:28:30.867 回答
1

您可以提供一个示例 plist,甚至可以编写一个实用程序,通过更新给定的属性列表来执行此设置,但是库的用户需要自己做一些事情,要么手动更新 plist,要么使用您的实用程序。你无法避免这一点。

于 2013-02-13T12:18:18.930 回答