NSOutlineView не регулирует размер представления документа NSScrollView - PullRequest
0 голосов
/ 11 июня 2018

У меня есть NSOutlineView, который я программно добавил в NSScrollView:

outlineView = ECOutlineView()
outlineView.translatesAutoresizingMaskIntoConstraints = false
scrollView.documentView = outlineView

Представление scrollview ограничено окном, в котором оно находится. Все ведет себя как ожидалось, за исключением того факта, что scrollView не выполняетреагировать на изменения длины outlineView.

Например, если строка расширяется, удлиняя представление контура, представление прокрутки не настраивается для прокрутки до нового содержимого.

Некоторая синхронизация прокруткиработает.Если я прокручиваю вниз до конца планировщика и начинаю удалять строки, прокрутка позиция обновляется, так что новая нижняя строка выравнивается по нижней части вида прокрутки, однако область прокрутки по-прежнему неверна.

Если я немного изменим размер окна, scrollView обновится и даст правильную область прокрутки.

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

1 Ответ

0 голосов
/ 11 июня 2018

Не следует устанавливать для translatesAutoresizingMaskIntoConstraints значение false для представления документа в режиме прокрутки.В целом, контейнерное представление отвечает за управление этим свойством для представлений, которыми оно управляет, потому что только оно знает, как оно управляет позицией.И вы должны оставить его по умолчанию на случай, если вы работаете с контейнерным представлением, которое не знает об автоматической компоновке.

Под «контейнерным представлением» я имею в виду класс, специально предназначенный для управленияразмещение других просмотров.Я не просто имею в виду любое представление, которое может иметь подпредставления.

Для включающего представления прокрутки, если вы просто переводите его в простой вид или в собственный класс представления и используете autolayout, чтобы контролировать его размещение, тогда вам все равно придется установить translatesAutoresizingMaskIntoConstraints в false.

...