我想允许我的应用程序用户在应用程序中使用他们自己的字体,方法是将它们复制到文档目录中(通过 iTunes)。但是,我找不到以这种方式使用自定义字体的方法,因为正确的方法取决于在应用程序的 Info.plist 中使用 UIAppFonts 键.
有什么方法可以在运行时覆盖它吗?
谢谢。
最佳答案
我知道这是一个老问题,但我今天尝试做同样的事情并找到了使用 CoreText 和 CGFont 的方法。
首先确保添加 CoreText 框架和
#import <CoreText/CoreText.h>
那么应该这样做(在这个例子中,我使用的是我之前下载并保存到 Documents 目录中的 fonts 目录的字体):
NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * documentsDirectory = [paths objectAtIndex:0];
NSString * fontPath = [documentsDirectory stringByAppendingPathComponent:@"Fonts/Chalkduster.ttf"];
NSURL * url = [NSURL fileURLWithPath:fontPath];
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);
CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
NSString * newFontName = (__bridge NSString *)CGFontCopyPostScriptName(newFont);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error;
CTFontManagerRegisterGraphicsFont(newFont, &error);
CGFontRelease(newFont);
UIFont * finalFont = [UIFont fontWithName:newFontName size:20.0f];
希望它能帮助任何遇到这个问题的人!
关于iphone - iOS:在运行时以编程方式添加自定义字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942449/