NSAttributedString: упаковка + усечение - PullRequest
0 голосов
/ 07 ноября 2010

У меня есть представление, которое рисует многоцветный текст внутри UITableViewCell.Для рисования многоцветного текста я использую NSAttributedString. Однако я хотел бы сделать так, чтобы, если текст слишком длинный, чтобы поместиться в представление, последняя видимая строка усекается для отображения многоточия в его конце.* Очевидно, что это очень легко сделать при рисовании только одной линии, так как вы можете просто установить kCTLineBreakByTruncatingTail для режима разрыва строки стиля абзаца.Проблема в том, что я хочу, чтобы мой текст был перенесен, чтобы заполнить прямоугольник, а затем обрезать только последнюю строку с помощью многоточия - настройка режима разрыва строки ограничивает весь текст одной строкой.идеи, как мне поступить по этому поводу?

Большое спасибо заранее за любые предложения, JC.

Ответы [ 3 ]

0 голосов
/ 22 августа 2013

Рабочий код вы можете найти здесь: https://stackoverflow.com/a/14612598/473067

Это похоже на то, что предложил Хит. Но потом все завернулось в блестящую упаковку.

0 голосов
/ 06 ноября 2017

Что ж, чтобы активировать усечение текста в UILabel, вам нужно заново установить параметр lineBreakMode в NSLineBreakByTruncatingTail после установки attributeText.

 textLabel.attributedText = attributedText;
 textLabel.lineBreakMode = NSLineBreakByTruncatingTail;
0 голосов
/ 02 февраля 2011

Создайте свой CTFrame из своего CTFrameSetter с прямоугольником вашего UITableViewCell. Затем вы можете получить все CTLines вашего CTFrame и определить, когда они будут отключены. Чтобы поменять местами многоточие, можно нарисовать его с помощью отдельного CTFrame и нарисовать поверх переполненного текста в последней строке.

...