NSAttributedString не работает для UILabel после использования HTML-кода - PullRequest
0 голосов
/ 06 мая 2018

У меня есть UILabel, и я назначаю HTML-текст, как показано ниже.

m014.text = [NSString stringWithFormat:@"<html><head><style type='text/css'>body {background-color: transparent;border: 0px;margin: 0px;padding: 0px;font-family: '%@'; font-size: %fpx;;ccolor:;}</style></head><body dir='%@'>%@<style type='text/css'> iframe { width: 100%% !important; } img {width: 100%% !important; height: auto;} table {width: 100%%;}</style></body></html>", localize(@"myFontName"), @16, localize(@"myDir"), m014.text];

m014.attributedText = [[NSAttributedString alloc] initWithData: [m014.text dataUsingEncoding:NSUTF32StringEncoding] options: @{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes: nil error: nil];

В iOS 10 и ниже я вижу обычный текст (обычный текст), однако в iOS 11 и выше я вижу HTML-текст в приложении. Я вижу HTML-код как есть ...

Есть идеи, почему это происходит?


В основном, я чувствую, что проблема в нижней строке.

[m014.text dataUsingEncoding:NSUTF32StringEncoding]

Но я помню, я использовал NSUTF32StringEncoding, потому что я видел закодированные символы.

Ответы [ 3 ]

0 голосов
/ 06 мая 2018

Я использую аналогичный код в своем приложении, но использую NSUTF16StringEncoding, следуя подсказкам в некоторых других ответах, например: NSAttributedString initWithHTML Неправильная кодировка символов? .

0 голосов
/ 06 мая 2018

Спасибо @ rmaddy за ответ в комментарии.

Код обновления, который я использовал, указан ниже.

m014.attributedText = [[NSMutableAttributedString alloc] initWithHTML:
    [m014.text dataUsingEncoding:NSUTF8StringEncoding] 
    options: @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType, 
    NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} 
    documentAttributes:nil];
0 голосов
/ 06 мая 2018

Пробовали ли вы NSUTF8StringEncoding при преобразовании строки HTML в NSAttributtedString?

NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:[yourHTMLString dataUsingEncoding:NSUTF8StringEncoding] 
                                 options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType,
                                           NSCharacterEncodingDocumentAttribute: @(NSUTF8StringEncoding)} 
                      documentAttributes:nil error:nil];
...