Аналогичный вопрос: Как изменить размер родительского представления в зависимости от размера вложенных представлений, созданных с помощью Autolayout
У меня есть NSStackView, который загружает DisclosureViewController
s (подклассы NSViewController), как в примере Apple InfoBarStackView.
Они могут расширять и убирать виды произвольной высоты. Я хотел бы, чтобы родительский вид, содержащий NSStackView
, изменил свою высоту в соответствии с содержимым NSStackView
. В примере с Apple это работает.
Однако, к сожалению, Apple изменяет размер NSWindow, и я использую CCNStatusItem
(CCNStatusItem Github), представление который прикреплен к элементу состояния в строке меню Apple. Размер этого окна изменяется до содержимого NSStackView
при загрузке, но не изменяется при изменении содержимого.
Когда я расширяю раздел, содержимое выходит за пределы и обрезается по нижнему краю представления.
Я прошел через все ограничения и попытался воспроизвести его в точности, но не смог заставить его работать. В примере Apple все добавляют программно, а я добавил NSStackView в Interface Builder.
Мой вопрос: какие ограничения у меня есть в Interface Builder (с какими приоритетами), чтобы размер родительского представления (окна) динамически изменялся в зависимости от содержимого представления стека? Должен ли я вызывать какой-то метод представления, чтобы оно работало?
Пожалуйста, дайте мне знать, если я пропустил некоторую необходимую информацию.
ОБНОВЛЕНИЕ
Принятый ответ был правильным способом сделать это. Вот результат. Мою разветвленную версию CCNStatusItem можно найти по адресу https://github.com/julianvogels/CCNStatusItem.git а>