Мое приложение состоит из NSScrollView, представление документа которого содержит несколько вертикально расположенных NSTextViews - каждый из которых изменяется в вертикальном направлении по мере добавления текста.
В настоящее время все это управляется кодом. NSTextViews изменяет размер автоматически, но я наблюдаю их изменение размера с помощью NSViewFrameDidChangeNotification, recalc все их происхождение, чтобы они не перекрывались и изменяли размер своего супервизора (вид документа с прокруткой), чтобы они все соответствовали и могут быть прокручены к.
Кажется, что это был бы идеальный кандидат на автозапуск! Я установил NSLayoutConstraints между первым текстовым видом и его контейнером, последним текстовым видом и его контейнером, а также каждым текстовым видом между собой. Затем, если какой-либо текстовый вид растет, он автоматически "толкает" истоки текстовых представлений под ним, чтобы удовлетворить противоречия, в конечном счете увеличивая размер представления документа, и все счастливы!
Кроме того, кажется, что нет способа сделать NSTextView автоматически растущим, поскольку текст добавляется в макете с ограничениями? Используя тот же самый NSTextView, который автоматически расширялся по мере ввода текста до этого, если я не укажу ограничение для его высоты, он имеет значение 0 и не отображается. Если я задаю ограничение, даже такое неравенство, как >= 20, оно остается застрявшим в этом размере и не растет с добавлением текста.
Я подозреваю, что это связано с реализацией NSTextView -intrinsicContentSize, которая по умолчанию возвращает (NSViewNoInstrinsicMetric, NSViewNoInstrinsicMetric).
Итак, мои вопросы: если я подклассифицирую NSTextView для возврата более значимого intrinsicContentSize на основе макета моего текста, будет ли мой автозапуск работать как ожидалось?
Любые указатели на реализацию intrinsicContentSize для вертикального изменения размера NSTextView?
