Puoi convertire il tuo CGFont in CTFont, ma sfortunatamente nessuno di questi ti porterà un UIFont. Ecco i modi per ottenere un UIFont: chiedere un font di sistema o chiedere un font con il suo nome PostScript. Pertanto, per i font personalizzati forniti in una UILabel, ti suggerisco di utilizzare quest'ultima.
Se si conosce il file del font vostra applicazione utilizzerà prima del tempo è possibile aggiungere al tuo pacco e caricarlo con UIFont, + fontWithName: dimensioni: come UIFont ricerche vostro pacco per un file di font con quella Nome PostScript.
Ad esempio, il file di carattere TrueType "VeraMono.ttf" ha il nome PostScript "Bitstream Vera Sans Mono", quindi è caricato in un UILabel come:
label.font = [UIFont fontWithName:@"Bitstream Vera Sans Mono" size:12];
Per ottenere i nomi PostScript non -in modo dinamico, utilizzare uno strumento di carattere, o, nel caso in cui il nome PostScript è uguale alla visualizzazione "Nome completo" da Finder> Ottieni informazioni.
Tuttavia, per i casi in cui non si conosce necessariamente il nome PostScript del font in anticipo (come il supporto dei caratteri definiti dall'utente), è possibile caricare il nome file in NSData e "grep" come nome PostScript. .
Buona fortuna,
Quale versione iOS è necessario supportare? È possibile caricare i font in bundle come istanze di 'UIFont' modificando Info.plist. – Costique
Non sono sicuro di convertire un CGFontRef in un UIFont ma potresti creare una sottoclasse di UILabel che prende un CGFontRef. Controlla questo [blog] (http://blog.mro.name/2010/08/uilabel-with-a-custom-cgfont/) nel farlo –
@Costique iOS 4.3 o successivo è OK.Il carattere è aggiunto dall'utente dopo aver scaricato l'app, quindi non posso preimpostare Info.plist. – ohho