2014-11-06 4 views
0

Я использую attributedText свойство label для рендеринга html.NSAttributedString не передает 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; 

Помощь требуется

+0

Может быть, вы пропустили NSUTF8StringEncoding для кодирования символов части, как показано здесь: http://stackoverflow.com/questions/4217820/convert-html-to-nsattributedstring-in -ios '[[NSAttributedString Alloc] initWithData: [HTMLString dataUsingEncoding: NSUTF8StringEncoding] опции: @ {NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @ (NSUTF8StringEncoding)} documentAttributes: ошибка ноль: ноль];' – Zhang

+0

, что кодирование я должен использовать то поскольку html не будет веб-страницей, но будет в основном для форматирования текста –

+0

Заменяет ли '@ {NSDocumentTypeDocumentAttribute: NSHTMLTextDoc umentType}; 'с' @ {NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, NSCharacterEncodingDocumentAttribute: @ (NSUTF8StringEncoding)}; 'help? – Zhang

ответ

0

Я попробовал и это сработало

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]; 
0

Как упоминалось в комментариях, для меня этот вопрос не был с HTML рендеринга, но с забыв установить «Количество линий "до 0 на 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];` 
Смежные вопросы