Сегодня я поведаю о том, как можно отобразить HTML-текст в UILabel, а не в UIWebView, как мы привыкли делать это раньше.
Еще в iOS SDK 6.0 в UILabel добавили attributedText, где можно было применять разные стили для строки.
Но как быть, если нам нужно отобразить HTML-содержимое в нашем UILabel?
Здесь на помощь нам приходит, добавленный в класс NSAttributedString в iOS SDK 7.0, метод:
- (instancetype)initWithData:(NSData *)data options:(NSDictionary *)options documentAttributes:(NSDictionary **)dict error:(NSError **)error
С его помощью можно создать объект NSAttributedString, стилизованный под HTML.
Как это сделать?
//кодируем HTML-строку в дату с необходимой кодировкой. Для корректного отображения кириллицы рекомендую использовать NSUnicodeStringEncoding
NSData *data = [html dataUsingEncoding:NSUnicodeStringEncoding];
//создаем словарь необходимых опций
NSDictionary *options = @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType};
//создаем объект NSAttributedString
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithData:data options:options documentAttributes: nil error: nil];
//применяем стилизованную строку к лейблу
label.attributedText = attributedString;
Для простоты использования я создал категорию для UILabel, которая доступна на GitHub с примерном.




























