2013-03-25 3 views
5

У меня есть простая вертикаль NSSplitView, и я не буду сохранять его размер при изменении размеров окон, но я хочу разрешить изменение размера NSSplitView вручную при перетаскивании вертикальной полосы, разделяющей два вида.NSSplitView: как не изменять размер с помощью окна, а только «вручную»?

EDIT. Это код, который я добавил, и по какой-то причине все идет не так: левая панель (sourceView) сохраняет одинаковый размер при изменении размера окна, но в правой панели, которая имеет правильные ограничения макета (работает хорошо, не применяя метод ниже) , NSSrollView - это левая панель, в которой я не хочу оставаться в том же положении, а другое изображение может изменяться с помощью окна.

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview 
{ 
    if ([subview class] == [NSScrollView class]) 
     return NO; 

    return YES; 

} 

Кто-нибудь знает быстрое решение для этого? Благодаря!

+0

сделали вы пытались реализации методов NSSplitView Делегирование? – nkongara

+0

Да, см. Комментарии в ответе ниже. Благодаря! – Luca

ответ

0

Вам необходимо ввести NSSplitViewDelegate. В частности, вам необходимо убедиться, что вы вернетесь NO для -splitView:shouldAdjustSizeOfSubview:, что предотвратит автоматическое изменение размера.

Поскольку у вас есть как минимум 2 подпрограммы в каждом из splitViews, вам нужно определить, какой из них вы не хотите переместить, поэтому верните NO только для него и YES для просмотра, которое вы хотите изменить. Так, например, если у вас есть список источников, и вы хотите, чтобы он оставался неизменным, за исключением ручной манипуляции, верните NO для исходного списка и YES для другой стороны.

+0

Это именно то, что я сделал, но по какой-то причине он не работает: левая панель остается того же размера, и это нормально, но по какой-то причине другая панель имеет странное поведение: иногда ее изменение размера является правильным по отношению к автозапуску ограничения, которые я задал раньше, но если я изменю его размер снова, что-то пойдет не так, и ограничения не будут выполнены. – Luca

+0

Можете ли вы изменить свой вопрос, чтобы описать ограничения автоматического макета? Это важно, чтобы полностью ответить на ваш вопрос. – gaige

+0

Я пытаюсь это сделать, но это не так просто, потому что у меня сложная иерархия представлений. Странная вещь также в том, что моя правая панель правильно изменяет размеры, когда размер окна изменяется, но когда я реализую метод, все идет не так. На данный момент я размещаю реализацию метода splitView: (NSSplitView *) splitView :AdvisSizeOfSubview: (NSView *) subview ', а позже сегодня я пытаюсь опубликовать весь код макета – Luca

6

В Xcode 4.6, левый пользовательский вид вертикального раздельного вида не является NSScrollView.

@synthesize leftView; 

- (BOOL)splitView:(NSSplitView *)splitView shouldAdjustSizeOfSubview:(NSView *)subview { 
    if (subview == leftView) return NO; 
    else return YES; 
} 
1

Попробуйте установить поведение зрения пункт Разбить как Sidebar

+0

Лучший ответ до сих пор –

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

  • Нет связанных вопросов^_^