IOS:取消注册CoreText注册的字体

时间:2013-08-30 13:59:06

标签: ios objective-c core-text

我在运行时加载ttf字体并使用CoreText注册它们。稍后,当字体更新时,我从CoreText取消注册字体,从服务器下载最新版本并再次使用CoreText注册字体。

这几乎可以正常工作,但似乎字体已缓存,并且在我的应用终止并重新启动之前不会更新。

取消注册字体并将其从任何缓存中删除的正确方法是什么?

我使用此代码取消注册字体:

NSURL *url = /* My url to the font */;
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef) url);
CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);
CFErrorRef error = nil;
CTFontManagerUnregisterGraphicsFont(newFont, &error);

CGFontRelease(newFont);

if (error) {
    NSLog(@"Error unregistering font: %@", error);
}

return newFontName;

我认为有一件事是错的,但不知道如何解决,我是如何得到CGFontRef的。 CGFontCreateWithDataProvider每次都会创建新的引用,或者我是否已经注册了已注册的CGFontRef(如果存在)?是否有更好的方法来获取已注册字体的CGFontRef

我只使用该字体来创建动态UIImage实例,因此我认为没有任何标签或其他UI元素保留对该字体的引用。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

经过一番尝试后,我认为这是iOS 7的一个错误 您是否尝试在iOS 6中运行此功能?