2014-09-24 166 views
9

我想解析我自己的HTML字符串到一個NSAttributedString在UITextView呈現。如何將粗體和斜體字體應用於NSAttributedString?

所以,當字符串顯示爲這樣:

<strong><em>這應該是兩個粗體和斜體</strong></em>

我想一個獨特的粗體和斜體字體應用到最終NSAttributedString,因此如果用戶在編輯過程中從其中刪除粗體或斜體字體,其餘字體之一將保持不變。

這就是爲什麼我不只是像其他SO答案所建議的那樣應用粗體斜體等單一字體樣式的主要原因。

回答

11

這裏是我的答案,通過不同的來源看後:

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]; 
相關問題