2013-11-25 2 views
3

Как создать NSLayoutManager, который присваивает каждый абзац в своем тексте другому NSTextContainer?NSLayoutManager с NSTextContainer за абзац

Это будет похоже на использование нескольких страниц/столбцов, которое является общим в TextKit, но каждая страница соответствует другому абзацу переменной длины.

ответ

4

Я думаю, что самый простой способ сделать это подкласс NSTextContainer и переопределить

- (CGRect)lineFragmentRectForProposedRect:(CGRect)proposedRect atIndex:(NSUInteger)characterIndex writingDirection:(NSWritingDirection)baseWritingDirection remainingRect:(CGRect *)remainingRect

В пользовательском методе, вы бы проверить атрибуты на characterIndex и посмотреть, если они соответствуют абзац, текст контейнера назначается. Если они есть, просто верните реализацию super, иначе возвращайте CGRectZero, чтобы указать, что предложенный прямоугольник недействителен для этого текстового контейнера. Это означает, что вам придется отслеживать атрибуты абзаца и текстовые контейнеры, к которым они соотносятся (и наоборот).

+0

Спасибо за идею! Я собираюсь попробовать это, когда получаю шанс и вернусь к вам. –

+1

ссылка разработчика мертва – Suragch

+0

Не удается найти обновленную ссылку, поэтому я ее удалил. –

0

Другим способом является вставка символа управления разрывом страницы (код ASCII: 12) в конце каждого абзаца.

+0

http: // stackoverflow. ком/а/34105106/1696813 –

Смежные вопросы