Ho una sottoclasse personalizzata di UILabel
che rende il disegno personalizzato utilizzando CoreText. Ho usato per disegnare le mie stringhe usando lo UIFont
impostato sull'etichetta che lo accede usando la proprietà font. Aggiungo anche alcuni tratti al carattere. Ecco come appare:Converti UIFont in CTFontRef e aggiungi corsivo sul display Retina
UIFont* font = [self font];
CTFontRef ref = CTFontCreateWithName((CFStringRef)[font name], [font pointSize], NULL);
CTFontRef italicFont = CTFontCreateCopyWithSymbolicTraits(ref, [font pointSize], NULL, kCTFontItalicTrait, kCTFontItalicTrait);
Questo funzionava bene fino a quando il nuovo iPad non appariva con il display retina. Quando eseguo la chiamata CTFontCreateCopyWithSymbolicTraits
, produce un valore restituito nullo. Ho scoperto che [font name]
restituisce ".HelveticaNeueUI" su questi nuovi dispositivi. Lo CTFontCreateWithName
sembra funzionare correttamente con questo nome di carattere privato, ma non lo è CTFontCreateCopyWithSymbolicTraits
. Tuttavia, se creo un carattere corsivo utilizzando [UIFont italicSystemFontOfSize:[font pointSize]]
, viene creato un carattere corsivo per il quale [font name]
restituisce ancora ".HelveticaNeueUI".
Come devo convertire il mio UIFont
in CTFontRef
in modo che possa ancora applicare nuovi tratti al mio CTFontRef
su entrambi i display retina e non retina?
E la vostra alternativa è ... – ssteinberg
Ha. Benvenuto in Core Text. –
Voto positivo per il downvote inutile. –