Добавление нескольких NSTextContainers в NSLayoutManager
Я заметил, что вы можете добавить несколько текстовых контейнеров в менеджер макетов в Objective-C, используя addTextContainer:(NSTextContainer *)textContainer
селектор. Используя TextKit, мне когда-либо приходилось добавлять только один текстовый контейнер, а при работе с несколькими текстовыми контейнерами все текстовые представления просто заполняются одним и тем же текстом из хранилища текста, связанного с менеджером раскладки. Мне просто любопытно, но когда мне понадобится добавить несколько текстовых контейнеров в один менеджер макета?
2 ответа
Один NSLayoutManger для нескольких текстовых контейнеров, когда вам нужно, чтобы текст в связанном NSTextStorage охватывал несколько страниц (обычно каждый NSTextView
) как в текстовом процессоре, распространяющем свой текст на несколько страниц.
NSLayoutManager
достаточно умен, чтобы разбить текст на NSTextStorage
в каждый NSTextContainer
,
... данные объекта NSTextStorage и их размещение в области, определенной объектом NSTextContainer.
Эта конфигурация ограничена наличием только одной пары NSTextContainer-NSTextView. При таком расположении текст проходит непрерывно в пределах области, определенной NSTextContainer.
Разрывы страниц, многоколоночный макет и более сложные макеты не могут быть учтены при таком расположении.
Используя несколько пар NSTextContainer-NSTextView, возможны более сложные компоновки. Например, для поддержки разрывов страниц приложение может настроить текстовые объекты, как показано на рисунке 3-4.
Общие конфигурации