使用富文本解析html

+ (NSMutableAttributedString *)formatText:(NSString *)text {
    NSData* data = [text dataUsingEncoding:NSUTF8StringEncoding];
    NSDictionary *options = @{NSDocumentTypeDocumentAttribute : NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute :@(NSUTF8StringEncoding) };
    NSError *error = nil;
    NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:data options:options documentAttributes:nil error:&error];

    if (error) {
        NSLog(@"HTML 解析錯誤: %@", error);
        return [[NSMutableAttributedString alloc] init];
    }
    
    // 創(chuàng)建可變富文本
    NSMutableAttributedString *mutableAttributedString = [attributedString mutableCopy];
    // 遍歷整個富文本的范圍,移除背景色屬性
    [mutableAttributedString enumerateAttribute:NSBackgroundColorAttributeName
                                        inRange:NSMakeRange(0, mutableAttributedString.length)
                                        options:0
                                     usingBlock:^(id  _Nullable value, NSRange range, BOOL * _Nonnull stop) {
        if (value) {
            [mutableAttributedString removeAttribute:NSBackgroundColorAttributeName range:range];
        }
    }];
    
    // 設置字體
    [mutableAttributedString beginEditing];
    [mutableAttributedString enumerateAttribute:NSFontAttributeName
                                        inRange:NSMakeRange(0, mutableAttributedString.length)
                                        options:0
                                     usingBlock:^(id  _Nullable value, NSRange range, BOOL * _Nonnull stop) {
        if (value) {
            UIFont *newFont = [UIFont systemFontOfSize:14];
            [mutableAttributedString addAttribute:NSFontAttributeName value:newFont range:range];
        }
    }];
    [mutableAttributedString endEditing];
    
    // 設置字體行間距
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    paragraphStyle.lineSpacing = 1.5;
    [mutableAttributedString addAttribute:NSParagraphStyleAttributeName
                             value:paragraphStyle
                             range:NSMakeRange(0, attributedString.length)];
    
    // 設置文本顏色
    [mutableAttributedString enumerateAttribute:NSBackgroundColorAttributeName
                                        inRange:NSMakeRange(0, mutableAttributedString.length)
                                        options:0
                                     usingBlock:^(id  _Nullable value, NSRange range, BOOL * _Nonnull stop) {
        if (value) {
            [mutableAttributedString removeAttribute:NSBackgroundColorAttributeName range:range];
        }
    }];
    [mutableAttributedString addAttribute:NSForegroundColorAttributeName
                             value:hexColor(333333)
                             range:NSMakeRange(0, attributedString.length)];

    return mutableAttributedString;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容