Как следует использовать ограничения автоматической компоновки внутри NSSplitView
subview?NSSplitView и автоопределение
Мой NSSplitView
подтаблицы имеет 3 подвид: topPane
, tableContainer
и bottomPane
и я поставил Сдерживает как это:
NSDictionary* views = NSDictionaryOfVariableBindings(topPane, tableContainer, bottomPane);
for (NSView* view in [views allValues]) {
[view setTranslatesAutoresizingMaskIntoConstraints:NO];
}
[myView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[topPane(34)][tableContainer][bottomPane(24)]|"
options:0
metrics:nil
views:views]];
[mySplitView addSubview:myView];
И получил это в консоли:
Unable to simultaneously satisfy constraints:
(
"<NSLayoutConstraint:0x7fd6c4b1f770 V:[NSScrollView:0x7fd6c4b234c0]-(0)-[CPane:0x7fd6c4b2fd10]>",
"<NSLayoutConstraint:0x7fd6c4b30910 V:[CPane:0x7fd6c4b2f870(34)]>",
"<NSLayoutConstraint:0x7fd6c4b30770 V:|-(0)-[CPane:0x7fd6c4b2f870] (Names: '|':NSView:0x7fd6c4b22e50)>",
"<NSLayoutConstraint:0x7fd6c4b212f0 V:[CPane:0x7fd6c4b2fd10]-(0)-| (Names: '|':NSView:0x7fd6c4b22e50)>",
"<NSLayoutConstraint:0x7fd6c4b2f910 V:[CPane:0x7fd6c4b2f870]-(0)-[NSScrollView:0x7fd6c4b234c0]>",
"<NSLayoutConstraint:0x7fd6c4b21290 V:[CPane:0x7fd6c4b2fd10(24)]>",
"<NSAutoresizingMaskLayoutConstraint:0x7fd6c3630430 h=--& v=--& V:[NSView:0x7fd6c4b22e50(0)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7fd6c4b1f770 V:[NSScrollView:0x7fd6c4b234c0]-(0)-[CPane:0x7fd6c4b2fd10]>
Я думаю <NSAutoresizingMaskLayoutConstraint:0x7fd6c3630430 h=--& v=--& V:[NSView:0x7fd6c4b22e50(0)]>
причины этого, но я не могу сбросить маску авторезистировки, потому что ее устанавливает NSSplitView
.
Каков наилучший способ использования автоматической компоновки внутри сплит-представления? И есть ли способ обработать минимальный/максимальный размер разделенного вида subview с автоматической компоновкой без NSSplitViewDelegate
?
Одинаковая проблема здесь. Я выложил все в IB, а не программно, но имел аналогичный вывод отладки, включая 'NSAutoresizingMaskLayoutConstraint'. –
Это кажется фиксированным в 10.8, но сломан, как вы заметили, под 10.7. В 10.8 вы можете установить минимальные высоты и ширину представлений контента в режиме разделения в Xcode (4.5.2 в любом случае). Невозможно сделать это в 10.7, а приложения с этим, созданные в 10.8, все еще не работают правильно в 10.7 – Dad
Работает вообще с 10.8+, но ограничения должны быть указаны между subviews для большинства просмотров - не supre - или вы получите * Unable для одновременного удовлетворения * ошибки .. – Jay