2014-09-24 9 views
9

Sto provando ad analizzare la mia stringa HTML in una NSAttributedString per il rendering in un UITextView.Come applicare sia il carattere grassetto che il carattere corsivo a una stringa NSAttributa?

Così, per quando la stringa appare come tale:

<strong><em> Questo dovrebbe essere sia in grassetto e corsivo </strong></em>

voglio applicare un tipo di carattere grassetto e corsivo distinta per l'eventuale NSAttributedString, in modo che se l'utente rimuove il font in grassetto o in corsivo durante la modifica, uno dei font rimanenti rimarrà intatto.

Questa è la ragione principale per cui non voglio semplicemente applicare uno stile di carattere singolo come grassetto-corsivo, come suggerito da altre risposte SO.

risposta

11

Ecco la mia risposta dopo aver guardato attraverso diverse fonti:

UIFontDescriptor *fontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleBody]; 

UIFontDescriptor *changedFontDescriptor;  
NSDictionary *attributes; 

uint32_t existingTraitsWithNewTrait = [fontDescriptor symbolicTraits] | UIFontDescriptorTraitBold | UIFontDescriptorTraitItalic; 
changedFontDescriptor = [fontDescriptor fontDescriptorWithSymbolicTraits:existingTraitsWithNewTrait]; 

UIFont *updatedFont = [UIFont fontWithDescriptor:changedFontDescriptor size:0.0]; 

attributes = @{ NSFontAttributeName : updatedFont }; 

attributedString = [[NSAttributedString alloc] initWithString:yourString attributes:attributes];