动态地将自定义字体加载到iOS

时间:2012-08-12 00:20:47

标签: ios core-text uifont

  

可能重复:
  iPhone - Convert CTFont to UIFont?

您是否知道我可以如何动态地将自定义字体添加到iOS而无需在编译时将其添加到项目中?

我正在查看在应用程序运行时下载字体的情况,然后动态加载以供使用。

如果可以,我想在加载后将其用作UIFont。

我已经搜索了一些可能性,并发现我可以使用CoreText加载字体:

- (CTFontRef)newCustomFontWithFileName:(NSString *)fontFileName
                                ofType:(NSString *)type
                               andSize:(float)pointSize
{
    NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontFileName ofType:type];
    NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath];
    CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData((CFDataRef)data);
    [data release];

    CGFontRef cgFont = CGFontCreateWithDataProvider(fontProvider);
    CGDataProviderRelease(fontProvider);

    CTFontRef font = CTFontCreateWithGraphicsFont(cgFont, pointSize, NULL, NULL);
    CGFontRelease(cgFont);
    return font;
}

然而,在这样做之后,是否可以将CTFontRef转换为UIFont以在整个应用程序中使用?

让我知道你们知道/想的是什么! :)

1 个答案:

答案 0 :(得分:0)

从iOS 5.1开始,没有公共API可以从UIFontCGFont创建CTFont。你运气不好。 :(

如果您希望他们为此添加API,请在http://bugreport.apple.com打开功能请求。