7
我加載ttf字體,在運行時使用CoreText註冊它們的註冊註銷字體。後來,當字體被更新,我從註銷的CoreText字體,從服務器下載最新版本,然後重新註冊與CoreText的字體。IOS:與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元素保留對字體的引用。
感謝您的幫助!
你有沒有解決這個問題? –