Трудно выразить эту проблему словами, но пример из реальной жизни поможет.Если вы посмотрите на приложение iTunes, оно выглядит как NSSplitView
для разделения Sidebar | Content
и вложенное NSSplitView
для списка источников и панели иллюстраций.
======>
Когда вы перетаскиваете разделитель, чтобы сделать боковую панель более тонкой, вид графического объекта (нижняя половина внутреннего NSSplitView
) укорачивается для поддержания правильного соотношения сторон.Это то поведение, за которым я следую.
Я подключил внешний NSSplitView
delegate
, чтобы он указывал на sideBarController, чтобы я мог получить изменения размеров и программно изменить размер нижней части разделенного вида., У меня эта половина проблемы работает правильно, , то есть, когда я меняю боковые панели, ширину, панели боковых панелей соответственно меняют свой размер.
Проблема, с которой я сталкиваюсь, заключается в атакекак изменить ширину боковой панели при изменении высоты вложенного NSSplitView
.Первоначально я пытался найти способы сделать этот внутренний разделитель неразборным, но не смог найти никакого способа сделать это.Теперь я настроил его так, чтобы делегатом внутреннего скроллвью было окно windowController, которому принадлежит основной splitview, а затем вычислил высоту, чтобы изменить ширину информационной панели.
Конечно, изменениеОдин размер заставляет другой разделенный вид изменять его размер, который снова изменяет размер оригиналов, и создается бесконечный цикл.Я мог бы добавить флаги и таймеры, чтобы попытаться решить эту проблему, но уже похоже, что я собираюсь здесь повторить эту задачу для достижения этой функциональности.
Как правильно ограничить вложенную панель splitview до ее родительской ширины илив общем, Каков наилучший способ дублирования поведения изменения размера в представлении iTunes «Выбранный элемент / сейчас воспроизводится»?