来自NSAttributedString的HTML

Jos*_*hua 11 html objective-c nsattributedstring ios

我需要将其转换回HTML,而不是将HTML转换为属性字符串.这可以在Mac上轻松完成,如下所示:http://www.justria.com/2011/01/18/how-to-convert-nsattributedstring-to-html-markup/

不幸的是,该方法dataFromRange:documentAttributes:仅在Mac上通过NSAttributedStringAppKit Additions提供.

我的问题是你怎么能在iOS上这样做?

Nik*_*Nik 7

不是'简单'的方式,而是使用以下方法迭代字符串的属性:

- (void)enumerateAttributesInRange:(NSRange)enumerationRange 
                           options:(NSAttributedStringEnumerationOptions)opts 
                        usingBlock:(void (^)(NSDictionary *attrs, NSRange range, BOOL *stop))block
Run Code Online (Sandbox Code Playgroud)

有一个NSMutableString变量来累积HTML(让我们称之为'html').在块中,您将使用字符串手动构造HTML.例如,如果文本属性'attrs'指定红色粗体文本:

[html appendFormat:@"<span style='color:red; font-weight: bold;'>%@</span>", [originalStr substringWithRange:range]]


编辑:昨天偶然发现:

来自"UliKit"的NSAttributedString + HTMLFromRange类别(https://github.com/uliwitness/UliKit/blob/master/NSAttributedString+HTMLFromRange.m)

看起来它会做你想要的.