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!
Czy kiedykolwiek rozwiązałeś to? –