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