Использование Autolayout с расширением NSTextViews

Мое приложение состоит изNSScrollView чье представление документа содержит количество вертикально сложенныхNSTextViews & # X2014; каждый из которых изменяет размеры в вертикальном направлении по мере добавления текста.

В настоящее время все это управляется в коде.NSTextViews изменить размер автоматически, но я наблюдаю их изменение сNSViewFrameDidChangeNotificationпересчитать все их происхождение, чтобы они не перекрывались, и изменить размер своего суперпредставления (представление документа с прокруткой), чтобы они все подходили и могли быть прокручены.

Кажется, что это был бы идеальный кандидат для автопрокладки! Я поставилNSLayoutConstraints между первым представлением текста и его контейнером, последним представлением текста и его контейнером и каждым представлением текста между собой. Затем, если какой-либо текстовый вид увеличивается, он автоматически «сдвигает» происхождение текстовых представлений под ним удовлетворяет ограничениям, в конечном итоге увеличивая размер представления документа, и все будут довольны!

За исключением того, что, кажется, нет никакого способа сделатьNSTextView автоматически увеличиваться при добавлении текста в макет на основе ограничений? Используя точно такой жеNSTextView который автоматически расширяется при вводе текста ранее, если я не указываю ограничение для его высоты, он по умолчанию устанавливается в 0 и не отображается. Если я укажу ограничение, даже неравенство, например & gt; = 20, оно останется в этом размере и не будет расти при добавлении текста.

Я подозреваю, что это связано с реализацией NSTextView-intrinsicContentSize, который по умолчанию возвращает(NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric).

Итак, мои вопросы: если я подклассыNSTextView вернуть более значимыйintrinsicContentSize Исходя из макета моего текста, будет ли моя автопереметка работать так, как ожидалось?

Любые указатели по реализацииintrinsicContentSize для вертикально изменяющегося размера NSTextView?

Ответы на вопрос(4)

Ваш ответ на вопрос