2015-07-05 3 views
0

У меня есть NSSplitView с двумя горизонтальными подзонами. Левый - это NSOutlineView, справа - NSTableView. Левый вид имеет два ограничения для ширины: 1)> = 150 и 2) < = 200. Поэтому у меня есть минимальная и максимальная ширина.NSSplitView частично обрушится

В func splitView(splitView: NSSplitView, canCollapseSubview subview: NSView) -> Bool { Я возвращаю true для левого подсмотра. Это работает, но полностью скрывает левый вид (как и должно).

Моя цель заключается в том, что вместо обычного пути левое представление сворачивается, скажем, 50px. Есть ли способ, как я могу достичь этого? Я думал о кодировании sth. в func splitView(splitView: NSSplitView, resizeSubviewsWithOldSize oldSize: NSSize), но это неправильный способ работы с автозапуском (я попытался, но установка фреймов subviews вызывает перезагрузку NSTableView при каждом изменении разделителя Splitview (что приводит к тому, что табличное представление теряет каждый выбор)) ,

ответ

0

Во-первых, независимо от того, что вы хотите назвать этим поведением, это не то, что Cocoa вызывает сбой подзапроса. Поэтому перестаньте думать о том, как свернуть.

Во-вторых, вы не можете указать ограничение минимальной ширины, а затем ожидать, что система проигнорирует его. Если вы хотите, чтобы представление иногда составляло всего 50 точек в ширину, вы не можете установить ограничение, равное> 150 точкам.

Вы можете попробовать реализовать метод делегата splitView(_:constrainSplitPosition:ofSubviewAt:), чтобы положение делителя было «привязано» к пределу 150 пунктов и пределу 50 пунктов. То есть, это может позволить любое положение> = 150 пунктов. Для позиции в пределах от 100 до 150 пунктов она будет корректировать ее до 150 пунктов. Для позиции ниже 100 пунктов она будет регулировать ее до 50 пунктов.

Смежные вопросы