Sto caricando i font ttf in fase di runtime e li registro utilizzando CoreText. Successivamente, quando il carattere viene aggiornato, annullo il carattere di CoreText, scarica l'ultima versione da un server e registro di nuovo il font con CoreText.IOS: Unregister font registrato con CoreText
Questo quasi funziona, ma sembra che il carattere sia memorizzato nella cache e non aggiornato fino a quando la mia app non viene terminata e riavviata.
Qual è il modo corretto di annullare la registrazione di un font e rimuoverlo da eventuali cache?
ho utilizzare questo codice per annullare la registrazione del tipo di carattere:
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;
Una cosa che mi sento è sbagliato, ma non so come risolvere il problema, è come ottengo il CGFontRef
. CGFontCreateWithDataProvider
crea nuovi riferimenti ogni volta oppure ottengo un riferimento a uno CGFontRef
già registrato se esiste? C'è un modo migliore per ottenere il CGFontRef
per un font già registrato?
Ho usato il carattere solo per creare istanze dinamiche UIImage
, quindi non penso che ci sia un'etichetta o altro elemento UI che mantiene un riferimento al carattere.
Grazie per il vostro aiuto!
Hai mai risolto questo? –