Отслеживание размера текстового представления

Можно установить NSTextContainer возразите для отслеживания размера NSTextView возразите и скорректируйте его собственный размер для соответствия каждый раз, когда изменяется текстовый размер представления. setHeightTracksTextView: и setWidthTracksTextView: методы позволяют Вам управлять этим отслеживанием для любой размерности.

Когда текстовый контейнер корректирует свой размер для соответствия того из его текстового представления, это принимает во внимание вставку, указанную текстовым представлением, таким образом, ограничительный прямоугольник вставляется от каждого возможного края. Другими словами, текстовый контейнер, отслеживающий размер его текстового представления, всегда меньше, чем текстовое представление в данной размерности дважды вставкой. Предположим, что текстовый контейнер установлен в ширину дорожки, и ее текстовое представление дает ему вставку (10,10). Теперь, если текстовое представление width изменяется на 138, верхний левый угол контейнера текста установлен лечь в (10,10), и его ширина установлена в 118, таким образом, его правый край является 10 точками от текстового правого края представления. Его высота остается тем же.

Отслеживает ли это размер своего текстового представления или нет, текстовый контейнер не растет или уменьшается, поскольку текст добавлен или удален; вместо этого, NSLayoutManager объект изменяет размеры текстового представления на основе части текстового контейнера, фактически заполненного текстом. Чтобы позволить текстовому представлению быть измененным этим способом, использовать setVerticallyResizable: или setHorizontallyResizable: методы (которые наследованы от NSText) по мере необходимости установите текстовый контейнер, чтобы не отследить размер его текстового представления и установить текстовый размер контейнера в надлежащей размерности, достаточно большой для размещения большой суммы текста — например, 10 000 000 точек (это не несет расходов вообще в обработке или хранении).

Обратите внимание на то, что текстовое представление может быть изменено на основе его текстового контейнера, и текстовый контейнер может изменить размеры себя на основе своего текстового представления. При установке обоих объектов изменить размеры автоматически в той же размерности приложение может быть захвачено в бесконечном цикле. Когда текст добавляется к текстовому контейнеру, текстовое представление изменено для адаптации области, фактически используемой для текста; это заставляет текстовый контейнер изменять размеры себя и передавать его текст, заставляющий текстовое представление изменять размеры себя снова, и т.д. до бесконечности. Каждый тип отслеживания размера имеет свои надлежащие использования; обязательно используйте только один для любой размерности.