2013-02-13 108 views
2

我创建一个框架(“可可触摸静态库”)中自定义的字体由其他iOS开发人员使用。 现在,我将在步骤here的框架内使用自定义字体。 步骤2在Info.plist文件中设置“UIAppFonts”。 但是在框架的情况下,Info.plist将由开发者提供)。 所以我的框架,用户只能设置在其应用程序的plist文件“UIAppFonts”属性,或者是有什么办法可以设置内部框架属性自己,所以,我的框架,每一个用户不需要设置“UIAppFonts”属性? 请指教,谢谢。“可可触摸静态库”

回答

1

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

+0

非常感谢你@ H2CO3您的快速回答,我会要求开发者添加“UIAppFonts”在他们的plist文件设置。 – 2013-02-13 13:02:44

5

正如你所说,你不能从你的静态库中设置UIAppFonts。根据你将要使用它,你可能不需要它。

正如你可以动态地在任何时候应用程序的生命周期中在静态库中一些早期称作init /设置方法时加载的字体,例如解决方法。

this教程由马科·阿门特,下面提供的代码:

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

你能告诉我这是inData吗?是它的font.ttf或otf文件数据或其他任何东西。 – ManiaChamp 2014-04-02 12:20:44

+0

我没有我的代码在我面前,但它应该是从实际的ttf/otf文件读取的字体数据,是的。你尝试过,失败了吗? – 2014-04-08 10:09:47

+0

这可以在我们的可可触摸框架内美妙地工作。加载这样的字体文件:的NSString *的FontPath = [[一个NSBundle bundleForClass:[ANYClassInYourFramework类]] pathForResource:@ “fontfilename” ofType:@ “TTF”]; NSData * fontData = [NSData dataWithContentsOfFile:fontPath]; – 2014-12-10 12:21:35