Добавление нескольких NSTextContainers в NSLayoutManager

Я заметил, что вы можете добавить несколько текстовых контейнеров в менеджер макетов в Objective-C, используя addTextContainer:(NSTextContainer *)textContainer селектор. Используя TextKit, мне когда-либо приходилось добавлять только один текстовый контейнер, а при работе с несколькими текстовыми контейнерами все текстовые представления просто заполняются одним и тем же текстом из хранилища текста, связанного с менеджером раскладки. Мне просто любопытно, но когда мне понадобится добавить несколько текстовых контейнеров в один менеджер макета?

2 ответа

Один NSLayoutManger для нескольких текстовых контейнеров, когда вам нужно, чтобы текст в связанном NSTextStorage охватывал несколько страниц (обычно каждый NSTextView) как в текстовом процессоре, распространяющем свой текст на несколько страниц.

NSLayoutManager достаточно умен, чтобы разбить текст на NSTextStorage в каждый NSTextContainer,

... данные объекта NSTextStorage и их размещение в области, определенной объектом NSTextContainer.

Эта конфигурация ограничена наличием только одной пары NSTextContainer-NSTextView. При таком расположении текст проходит непрерывно в пределах области, определенной NSTextContainer.

Разрывы страниц, многоколоночный макет и более сложные макеты не могут быть учтены при таком расположении.

Используя несколько пар NSTextContainer-NSTextView, возможны более сложные компоновки. Например, для поддержки разрывов страниц приложение может настроить текстовые объекты, как показано на рисунке 3-4.

Общие конфигурации

https://developer.apple.com/library/content/documentation/TextFonts/Conceptual/CocoaTextArchitecture/TextSystemArchitecture/ArchitectureOverview.html

Другие вопросы по тегам