2013-08-30 45 views
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元素保留對字體的引用。

感謝您的幫助!

+0

你有沒有解決這個問題? –

回答

0

經過一番嘗試,我認爲這是一個iOS 7的bug。
你有沒有試過在iOS 6中運行這個?