Последняя строка 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 в представление. Благодарю.

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

Проблема в том, что тегу 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;}

  • Сбой приложения Iphone по строке: UIKit`-
  • Добавьте «... Подробнее» в конец UILabel
  • Программирование многострочных типов смешанных типов uiview
  • Метод UILabel sizeToFit работает неправильно
  • Как центрировать горизонтально две метки?
  • Как сделать CustomLink привлекательным в OHAttributedLabel
  • Текст UILabel не отображается, но значение «text» обновляется (отображается в консоли)
  • NSLayoutConstraint для UILabel для «увеличения» дополнительных строк
  • UILabel для автоматического прерывания линии, когда линия слишком длинная
  • Swift: отображение данных HTML в ярлыке или textView
  • iOS 7 дает мне другую ширину и высоту CGSize
  • Interesting Posts

    Является ли это переопределением метода или нет?

    Как очистить экран IOS

    Силовая портретная ориентация на iPhone с телефонной связью

    Как предварительно загружать текстуры в Sprite Kit?

    Realm для ios не сохраняет, заканчивая debug

    Два приложения для iOS, использующих один и тот же идентификатор приложения Facebook – это возможно?

    Просмотр добавлен в applicationDidEnterBackground не отображается, пока приложение не вернется с фона

    Как получить название выбранной кнопки UIActionSheet в ярлыке?

    Почему в представлении заголовка таблицы появляются заголовки разделов в виде таблицы?

    Методы вращения UIViewController

    Интернет-служба Amazon S3 отключена

    Положение касания iOS8 ограничено в ландшафте, как если бы окно было портным с одной стороны?

    Нет такого модуля AVFoundation при тестировании на iPhone7.1.1

    iOS: Как открыть камеру с эффектом анимации?

    Как реализовать безопасное FTP-соединение на iOS

    Давайте будем гением компьютера.