Ios NSAttributeString未呈现html换行符

Ios NSAttributeString未呈现html换行符,ios,objective-c,uilabel,nsattributedstring,Ios,Objective C,Uilabel,Nsattributedstring,我正在使用label的attributedText属性来呈现html 它可以很好地渲染粗体和斜体。然而,当我试图呈现html换行符时,它只是切断了换行符后出现的所有文本 NSString* view = @"<i>Testing</i> and this is <b>bold</b> <br> This should be in next line"; NSDictionary *options = @{NSDocumentTypeDo

我正在使用
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;
NSString*view=@“正在测试,这是粗体的
应该在下一行”; NSDictionary*选项=@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType}; NSAttributedString*预览=[[NSAttributedString alloc]initWithData:[查看数据使用编码:NSUTF8StringEncoding]选项:选项文档属性:nil错误:nil]; self.labelView.attributedText=预览;

需要帮助

我试过了,效果很好

NSString* view = @"<i>Testing</i> and this is <b>bold</b> <br> This should be in next line";
NSAttributedString *preview =[[NSAttributedString alloc] initWithData:[view dataUsingEncoding:NSUTF8StringEncoding]
                                 options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                           NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)}
                      documentAttributes:nil error:nil];

UILabel *lbl = [[UILabel alloc] initWithFrame:cell.textLabel.frame];
[lbl setAttributedText:preview];
NSString*view=@“正在测试,这是粗体的
应该在下一行”; NSAttributedString*预览=[[NSAttributedString alloc]initWithData:[查看数据使用编码:NSUTF8StringEncoding] 选项:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)} 文档属性:无错误:无]; UILabel*lbl=[[UILabel alloc]initWithFrame:cell.textLabel.frame]; [lbl SetAttributeText:预览];
如评论中所述,对我来说,这个问题不是HTML呈现,而是忘记在UILabel上将“行数”设置为0。

我在这方面遇到一些问题,获取ASCII码,而不是一些特殊字符,如
“&”
和其他一些代码。只需使用即可解决所有问题:

NSString *html = [command.arguments objectAtIndex:
NSData *data =  [html dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *dict = @{@"WebMainResource": @{@"WebResourceData": data, @"WebResourceFrameName": @"", @"WebResourceMIMEType": @"text/html", @"WebResourceTextEncodingName": @"UTF-8", @"WebResourceURL": @"about:blank"}};
data = [NSPropertyListSerialization dataWithPropertyList:dict format:NSPropertyListXMLFormat_v1_0 options:0 error:nil];
NSAttributedString *decodedString = [[NSAttributedString alloc] initWithData:data
                                                                        options:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType}
                                                                  documentAttributes:NULL
                                                                               error:NULL];`

可能您缺少字符编码部分的NSUTF8StringEncoding,如下所示:
[[NSAttributeString alloc]initWithData:[htmlString dataUsingEncoding:NSUTF8StringEncoding]选项:@{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}文档属性:无错误:无];
我应该使用什么编码,因为html不是网页,而是主要用于格式化文本;{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType};替换为
{NSDocumentTypeDocumentAttribute:NSHTMLTextDocumentType,NSCharacterEncodingDocumentAttribute:@(NSUTF8StringEncoding)}
帮助?实际上,如果用

替换

会发生什么?我认为

是用于换行符的正确XHTML标记。事实上,问题中的代码工作正常,我刚刚忘记了在Interface Builder中更改uilabel的行数。感谢您的帮助。