2

可能重复:
iPhone - 将 CTFont 转换为 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 以便在整个应用程序中使用?

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

4

1 回答 1

0

从 iOS 5.1 开始,没有UIFont从 aCGFont或 a创建 a 的公共 API CTFont。你运气不好。:(

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

于 2012-08-12T03:31:29.297 回答