我正在尝试获取以html格式格式化的文本片段,以在UITableViewCell中的iPhone上很好地显示。
到目前为止,我有这个:
NSError* error; NSString* source = @"<strong>Nice</strong> 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]; }];