2013-08-30 12 views
7

Załaduję czcionki ttf w czasie wykonywania i rejestruję je przy użyciu CoreText. Później, gdy czcionka zostanie zaktualizowana, wyrejestruję czcionkę z CoreText, pobierz najnowszą wersję z serwera i ponownie zarejestruję czcionkę za pomocą CoreText.IOS: Wyrejestruj czcionkę zarejestrowaną przez CoreText

To prawie działa, ale wygląda na to, że czcionka jest buforowana i nie jest aktualizowana, dopóki moja aplikacja nie zostanie przerwana i zrestartowana.

Jaki jest właściwy sposób wyrejestrowania czcionki i usunięcia jej z pamięci podręcznej?

używam tego kodu, aby wyrejestrować czcionki:

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; 

jedna rzecz, że czuję się źle, ale nie wiem jak to naprawić, to w jaki sposób mogę uzyskać CGFontRef. Czy za każdym razem CGFontCreateWithDataProvider tworzy nowe referencje, czy mogę uzyskać odniesienie do już zarejestrowanego CGFontRef, jeśli istnieje? Czy istnieje lepszy sposób uzyskania CGFontRef dla już zarejestrowanej czcionki?

Używam tylko czcionki do tworzenia dynamicznych instancji UIImage, więc nie sądzę, że istnieje jakaś etykieta lub inny element UI, który zachowuje odniesienie do czcionki.

Dzięki za pomoc!

+0

Czy kiedykolwiek rozwiązałeś to? –

Odpowiedz

0

Po kilku próbach przyjmuję, że to błąd systemu iOS 7.
Czy próbowałeś uruchomić to na iOS 6?

Powiązane problemy