将HTML解析为NSAttributedText-如何设置字体?

我正在尝试获取以html格式格式化的文本片段,以在UITableViewCell中的iPhone上很好地显示。

到目前为止,我有这个:

NSError* error;

NSString* source = @"<span>Nice</span> try, Phil";

NSMutableAttributedString* str = [[NSMutableAttributedString alloc] initWithData:[source dataUsingEncoding:NSUTF8StringEncoding]

options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,

NSCharacterEncodingDocumentAttribute: [NSNumber numberWithInt:NSUTF8StringEncoding]}

documentAttributes:nil error:&error];

这种作品。我得到一些加粗的“ Nice”文字!但是…它还将字体设置为Times

Roman!这不是我想要的字体。我想我需要在documentAttributes中设置一些内容,但是,我在任何地方都找不到任何示例。

回答:

弄清楚了。有点负担,也许不是最佳答案。

此代码将经历所有字体更改。我知道它使用的字体为“ Times New Roman”和“ Times New Roman

BoldMT”。但是无论如何,这都会找到粗体并让我重置它们。我也可以在设置时重置大小。

老实说,我希望/认为有一种方法可以在解析时进行设置,但是如果有的话,我找不到它。

    NSRange range = (NSRange){0,[str length]};

[str enumerateAttribute:NSFontAttributeName inRange:range options:NSAttributedStringEnumerationLongestEffectiveRangeNotRequired usingBlock:^(id value, NSRange range, BOOL *stop) {

UIFont* currentFont = value;

UIFont *replacementFont = nil;

if ([currentFont.fontName rangeOfString:@"bold" options:NSCaseInsensitiveSearch].location != NSNotFound) {

replacementFont = [UIFont fontWithName:@"HelveticaNeue-CondensedBold" size:25.0f];

} else {

replacementFont = [UIFont fontWithName:@"HelveticaNeue-Thin" size:25.0f];

}

[str addAttribute:NSFontAttributeName value:replacementFont range:range];

}];

以上是 将HTML解析为NSAttributedText-如何设置字体? 的全部内容, 来源链接: utcz.com/qa/426089.html

回到顶部