How to apply both bold and italic font to an NSAttributedString?

会有一股神秘感。 提交于 2019-11-30 08:27:07

问题


I'm trying to parse my own HTML string into an NSAttributedString for rendering in a UITextView.

So, for when the string appears as such:

<strong><em>This should be both bold and italic</strong></em>

I want to apply a distinct bold and italic font to the eventual NSAttributedString, so that if the user ever removes either the bold or italic font from it during editing, one of the remaining fonts will stay intact.

This is the main reason why I don't simply want to apply a single font style like bold-italic, as other SO answers have suggested.


回答1:


Here is my answer after looking through different sources:

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


来源:https://stackoverflow.com/questions/26023027/how-to-apply-both-bold-and-italic-font-to-an-nsattributedstring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!