NSAttribute字符串中的HTML
我需要将HTML转换回HTML,而不是将其转换为属性字符串。这可以在Mac上轻松完成,如下所示: 不幸的是,方法NSAttribute字符串中的HTML,html,objective-c,ios,nsattributedstring,Html,Objective C,Ios,Nsattributedstring,我需要将HTML转换回HTML,而不是将其转换为属性字符串。这可以在Mac上轻松完成,如下所示: 不幸的是,方法dataFromRange:documentAttributes:仅通过nsattributestringAppKit附件在Mac上可用 我的问题是,如何在iOS上执行此操作?这不是一种“简单”的方法,但如何使用以下命令迭代字符串的属性: - (void)enumerateAttributesInRange:(NSRange)enumerationRange
dataFromRange:documentAttributes:
仅通过nsattributestring
AppKit附件在Mac上可用
我的问题是,如何在iOS上执行此操作?这不是一种“简单”的方法,但如何使用以下命令迭代字符串的属性:
- (void)enumerateAttributesInRange:(NSRange)enumerationRange
options:(NSAttributedStringEnumerationOptions)opts
usingBlock:(void (^)(NSDictionary *attrs, NSRange range, BOOL *stop))block
有一个NSMutableString
变量来累积HTML(我们称之为“HTML”)。在块中,您将使用字符串手动构造HTML。例如,如果文本属性“attrs”指定红色粗体文本:
[html appendFormat:@“%@,[originalStr substringWithRange:range]]
编辑:昨天偶然发现: NSAttributedString+HTMLFromRange类别来自“UliKit” ()
看起来它可以做你想做的事。使用下面的代码。它工作得很好
NSAttributedString *s = ...;
NSDictionary *documentAttributes = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
NSData *htmlData = [s dataFromRange:NSMakeRange(0, s.length) documentAttributes:documentAttributes error:NULL];
NSString *htmlString = [[NSString alloc] initWithData:htmlData encoding:NSUTF8StringEncoding];
是的,我在考虑。最困难的部分是处理字体,看看它们是粗体、斜体还是无字体。我现在可以试一试,看看效果如何。谢谢很好,刚刚注意到新的链接(所以当答案被编辑时似乎不会通知),它做了我想要的一切。非常感谢!(+1 & ✔)@Joshua这是如何解决你的问题的?似乎NSAttributedString+HTMLFromRange充满了OS X-only的东西,不是吗?@MatthewFrederick我从来没有用它实现过任何东西,但我记得最后看到的是Cocoanatics DTCoreText。它只是为了从HTML获取NSAttributedString,现在支持以相反的方式实现,即从NSAttributedString获取HTML。您可以在Github上找到
DTCoreText
:对于任何需要Joshua所说内容的人,它的.its在DTCoreText中,出于某种原因,我找不到它,但现在我找到了:)这是可行的,但它创建了HTML 4格式,而不是HTML 5。