Разрыв по высоте между NSSplitView и его суперпредставлением - откуда он?

Я использую раскадровки для создания приложения OS X. Он устроен так, что мой контроллер главного окна содержит в качестве контроллера просмотра содержимого NSSplitViewController.

Однако иногда, когда я открываю приложение, возникает разрыв между верхней частью разделенного вида и нижней частью строки заголовка окна:

приложение с пробелом

Этот разрыв исчезает, как только я изменяю размер окна.

Я захватил иерархию представлений и увидел эти ограничения автоматического макета. Один в частности выглядел интересно:

просмотр отладчика

Интересно! Но я не могу найти место в моем приложении, которое определяет эти ограничения автоматического макета, ни в окне, ни в разделенном виде.

Как только размер окна изменится, ограничение будет выглядеть так (это на NSThemeFrame):

введите описание изображения здесь

Ограничение не будет выделено серым цветом, если я посмотрю на него из NSSplitView:

введите описание изображения здесь

Разница 22 имеет некоторый смысл; это высота самой строки заголовка.

Что я могу сделать, чтобы узнать, что заставляет его вести себя так?

1 ответ

Решение

Проблема закончилась тем, что мне нужно было начать изнутри. Сначала я проверил размеры, указанные в кадре, для каждого из представлений NSSplitView. Получив эти размеры, я перешел к фрейму NSSplitView и соответственно установил размеры.

Затем я подошел к фрейму NSWindow и убедился, что его размеры по крайней мере равны размерам NSSplitView. Если он больше, нет проблем, но если он меньше, то окно открывается отрезанным.

Это может быть только для моего случая использования, потому что я пытался создать новый проект и воспроизвести проблему, но не смог воспроизвести его.

Другие вопросы по тегам