2013-08-30 15 views
7

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!

+0

Hai mai risolto questo? –

risposta

0

Dopo alcuni tentativi, presumo che sia un errore di iOS 7.
Hai provato a eseguire questo in iOS 6?

Problemi correlati