如何将粗体和斜体字体应用于NSAttributedString?

时间:2014-09-24 17:32:47

标签: html ios nsattributedstring

我正在尝试将自己的HTML字符串解析为NSAttributedString,以便在UITextView中进行渲染。

因此,当字符串出现时:

  

<strong><em>这应该是粗体和斜体</strong></em>

我想在最终的NSAttributedString中应用一个明确的粗体和斜体字体,这样如果用户在编辑过程中从中删除了粗体或斜体字体,其余字体将保持不变。

这就是为什么我不想像其他SO答案所暗示的那样只应用粗体斜体等单一字体样式的主要原因。

1 个答案:

答案 0 :(得分:12)

在查看不同来源后,我的回答是:

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];