2013-03-25 9 views
5

Mam prosty pionowy NSSplitView i nie mogę zachować jego rozmiaru podczas zmiany rozmiarów okien, ale chcę ręcznie zmienić rozmiar NSSplitView podczas przeciągania pionowego paska, który dzieli dwa widoki.NSSplitView: jak nie zmienić rozmiaru okna, ale tylko w "ręczny" sposób?

EDYCJA. To jest kod, który dodałem iz jakiegoś powodu wszystko idzie źle: lewy panel (sourceView) zachowuje ten sam rozmiar podczas zmiany rozmiaru okna, ale prawy panel, który ma poprawne ograniczenia automatycznego układu (działa dobrze bez implementacji poniższej metody) . NSSrollView to lewy panel, w którym chcę pozostać w tej samej pozycji, a drugi widok może zmieniać rozmiar za pomocą okna.

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

    return YES; 

} 

Ktoś zna szybkie rozwiązanie, aby to zrobić? Dzięki!

+0

nie próbowałeś wdrażaniu metod NSSplitView Delegowanie? – nkongara

+0

Tak, zobacz komentarze w odpowiedzi poniżej. Dzięki! – Luca

Odpowiedz

0

Musisz wdrożyć NSSplitViewDelegate. W szczególności musisz upewnić się, że zwrócisz NO dla -splitView:shouldAdjustSizeOfSubview:, co uniemożliwi automatyczną zmianę rozmiaru.

Ponieważ masz co najmniej 2 subviews w każdym z splitViews, musisz określić, którego nie chcesz przenieść, więc zwróć NO tylko dla niego i YES dla widoku, który chcesz zmienić. Na przykład jeśli masz listę źródeł i chcesz, aby pozostała niezmieniona z wyjątkiem ręcznej manipulacji, zwróć NO dla listy źródłowej i YES dla drugiej strony.

+0

To jest dokładnie to, co zrobiłem, ale z jakiegoś powodu to nie działa: lewy panel pozostaje tej samej wielkości i jest ok, ale z jakiegoś powodu inne okno ma dziwne zachowanie: czasami jego zmiana rozmiaru jest poprawna w stosunku do autolayout ograniczenia, które ustawiłem wcześniej, ale jeśli ponownie zmieniam rozmiar, coś pójdzie nie tak i ograniczenia nie zostaną spełnione. – Luca

+0

Czy możesz zmienić swoje pytanie, aby opisać ograniczenia automatycznego układu? To ważne, aby w pełni odpowiedzieć na twoje pytanie. – gaige

+0

Próbuję to zrobić, ale nie jest to takie łatwe, ponieważ mam złożoną hierarchię widoków. Dziwne jest również to, że mój prawy panel zmienia się poprawnie, gdy zmienia się rozmiar okna, ale gdy wdrażam metodę, wszystko idzie nie tak. Na razie opublikuję implementację metody split -: (BOOL) splitView: (NSSplitView *) splitView shouldAdjustSizeOfSubview: (NSView *) subview 'i późniejszy dziś próbuję opublikować cały kod layoutu – Luca

6

W Xcode 4.6 lewy niestandardowy widok widoku podziału pionowego nie jest NSScrollView.

@synthesize leftView; 

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

Spróbuj ustawić zachowanie Podziel widok elementu jako Sidebar

+0

Najlepsza odpowiedź do tej pory –

Powiązane problemy