在iOS 7中,我们获得了将HTML字符串转换为NSAttributedString的功能,如下所示:
NSString *html = @"<bold>Wow!</bold> Now <em>iOS</em> can create <h3>NSAttributedString</h3> from HTMLs!";
NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
NSAttributedString *attrString = [[NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUTF8StringEncoding] options:options documentAttributes:nil error:nil];
我们还能够使用NSDefaultAttributesDocumentAttribute选项为未指定某些属性的HTML提供默认值。
我的问题是:有没有办法让NSAttributedString忽略它在HTML中看到的某些属性(例如颜色),而是使用我提供的属性?换句话说,我想提供覆盖属性值,而不是默认值。
答案 0 :(得分:1)
您可以尝试枚举字符串。例如,尝试更改链接颜色。
NSMutableAttributedString *mttrString = [attrString mutableCopy];
[mutableString beginEditing];
[mutableString enumerateAttribute:NSLinkAttributeName
inRange:NSMakeRange(0, res.length)
options:0
usingBlock:^(id value, NSRange range, BOOL *stop) {
if (value) {
UIFont *oldFont = (UIFont *)value;
UIFont *newFont = [UIFont systemFontOfSize:12.f];
[res addAttribute:NSFontAttributeName value:newFont range:range];
}
}];
[res endEditing];
attrString = mAttrString;
我还没试过这个,但你应该能够以这种方式操纵字符串。