【发布时间】:2014-11-06 06:50:23
【问题描述】:
我正在使用label 的attributedText 属性来呈现html。
渲染粗体和斜体效果很好。但是,当我尝试呈现 html 换行符时,它只会切断换行符后出现的所有文本。
NSString* view = @"<i>Testing</i> and this is <b>bold</b> <br> This should be in next line";
NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
NSAttributedString *preview = [[NSAttributedString alloc] initWithData:[view dataUsingEncoding:NSUTF8StringEncoding] options:options documentAttributes:nil error:nil];
self.labelView.attributedText = preview;
需要帮助
【问题讨论】:
-
也许您缺少字符编码部分的 NSUTF8StringEncoding,如下所示:stackoverflow.com/questions/4217820/…
[[NSAttributedString alloc] initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} documentAttributes:nil error:nil]; -
我应该使用什么编码,因为 html 不是网页,而是主要用于格式化文本
-
用
@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)};替换@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};有帮助吗? -
实际上,如果将
<br>替换为<br />会发生什么?我认为<br />是适合换行符的 XHTML 标记。 -
实际上问题中的代码运行良好,我只是忘记了在 Interface Builder 中更改 uilabel 的行数。感谢您的帮助。
标签: ios objective-c uilabel nsattributedstring