Последняя строка NSAttributedString, не отображаемая в UILabel

У меня есть текст, который содержит форматирование HTML, которое я пытаюсь отобразить на виде. В настоящее время я использую NSAtributedString для отображения текста внутри UILabel .

Я получаю присваиваемую строку следующим образом:

 NSString *htmlString = @"<html>" " <head>" " <style type='text/css'>" " body { font: 12pt 'Helvetica'; color: #111111; }" " </style>" " </head>" " <body>"; htmlString = [htmlString stringByAppendingString:self.descriptionText]; htmlString = [htmlString stringByAppendingString:@"</body></html>"]; NSError *err = nil; NSAttributedString *attributedText = [[NSAttributedString alloc] initWithData: [htmlString dataUsingEncoding:NSUTF8StringEncoding] options: @{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType} documentAttributes: nil error: &err]; 

а затем назначьте его attributedText attribitedText моего ярлыка. Свойство self.descriptionText – это NSString который может содержать простую HTML-разметку, такую ​​как p теги или теги span с встроенными стилями. Техника обертывания строки в HTML-документе была найдена в другой статье StackOverflow.

UILabel имеет значение Lines = 0 и Line Breaks = Word Wrap. Поведение, которое я вижу, заключается в том, что метка растет должным образом, чтобы разместить всю строку, но последняя строка строки никогда не отображается, независимо от того, как долго длится строка.

Вот скриншот с двумя ярлыками. Верхняя метка (с желтым фоном) имеет мою привязанную к HTML строку. Вы можете видеть, что метка имеет размер, чтобы разрешить 3 строки текста, но отображаются только два, а остальные – усечены. Второй ярлык (с красным фоном) имеет простую строку, назначенную свойству Text, и она отлично рисуется.

Строка HTML, используемая в изображении примера, содержит следующий текст:

 <p>With the world's longest fan-vaulted ceiling, an original Reubens painting, and an excellent collection of medieval stained glass, this chapel has intrigue from multiple angles</p> 

захват экрана двумя ярлыками. Верх имеет NSAttributedString, внизу - простой NSString.

Допустимый ответ объясняет, как я могу предотвратить усечение последней строки или предоставить простой альтернативный метод для отображения текста HTML в представление. Благодарю.

3 Solutions collect form web for “Последняя строка NSAttributedString, не отображаемая в UILabel”

Хорошо, я понял это. Это не очевидное решение, но после этого я сделал ладонь.

Проблема в том, что тегу p задается маржа и / или заполнение, которое UILabel текст за пределами границ UILabel . Я не знаю, почему это не принимается во внимание, когда вычисляется размер строки, но мне все равно.

Решение было для меня добавить p {margin:0; padding:0;} p {margin:0; padding:0;} в тег стиля, который я добавлял к строке HTML. Теперь вся строка правильно рисуется внутри UILabel.

Просто наткнулся на это. По-видимому, UILabel испытывает некоторые трудности при вычислении правильного размера при показе attributedText который имеет атрибут NSParagraphStyleAttributeName .

Я решил проблему, удалив этот атрибут из моей NSMutableAttributedString прежде чем назначать его на мой ярлык следующим образом:

 [mutableAttributedString removeAttribute:NSParagraphStyleAttributeName range:NSMakeRange(0, mutableAttributedString.length)]; 

Эффект один и тот же, но он чувствует себя немного более аккуратным, чем добавление некоторого встроенного css.

У меня была такая же проблема с новым iOS 11.

Моим решением было вставить css-строку-высоту. Хотя это не влияет на отображаемую высоту строки, она решила проблему, и теперь отображаются все строки 🤔

body {font-size:14px;line-height:14px;}p {margin:0;padding:0;line-height:14px;}

  • Почему я не могу изменить рамки моего UILabel?
  • Как показать запрос GET в Label
  • UILabel, UIFont и UTF-8 Треугольник
  • if с пустой UILabel
  • Как достичь четко выраженного повернутого UILabel?
  • Создавать привязанные «ссылки» в NSAttributedString UILabel?
  • Подкласс UILabel инициализируется пользовательским цветом
  • Может renderInContext: поддерживать угловой радиус и тени?
  • Неверный внутренний размер атрибутного текста в ярлыке
  • Прокрутка UICollectionView использует много памяти, приводящую к сбою
  • Добавить UILabel в ячейке UICollectionView
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.