2015-05-07 8 views
10

Czy istnieje sposób, aby zapobiec zmianie rozmiaru widoku, jeśli kontroler widoku jest prezentowany jako arkusz za pomocą metody presentViewControllerAsSheet lub przy użyciu stylu pliku " arkusz".OS-X: Jak zapobiec zmianie rozmiaru kontrolera widoku, który jest prezentowany jako arkusz

Należy pamiętać, że selekcje modalne/pokazowe można wszczepić do kontrolera okiennego, który może być ustawiony jako nie-skalowalny z samego scenorysu. Segmenty typu popover nie mogą być zmieniane domyślnie.

Każda pomoc byłaby znacząca. enter image description here

Odpowiedz

7

Czy próbowałeś ustawić ustawienia kontrolera widoku mapy -preferredContentSize? W przeciwnym razie, o dodaniu szerokości i wysokości do widoku kontrolera widoku na -viewDidLoad?

+0

PreferredContentSize rozwiązuje ten problem. – Abhinav

+1

przeszukiwałem cały czas, dopóki nie znalazłem tego posta, preferowana funkcjaContentSize działa magicznie ... w Swift pod viewDidLoad: self.preferredContentSize = NSSize (width: 500.0, height: 700.0) – CRE8IT

+0

Nie można tego zrobić w konstruktorze interfejsów? –

0

Powyższe metody nie działają dla mnie. self.view.autoresizesSubviews = NO; ta linia w viewcontroller powinno wystarczyć, jeśli powyższe metody nie działał

0

Żaden z innymi rozwiązaniami pracował dla mnie, więc skończyło się używając NSWindow jako kontroler blachy (zamiast NSViewController na własną rękę) .

zadeklarować obiekt NSWindowController w pliku nagłówka:

NSWindowController *detailWindow; 

Aby otworzyć okno, w postaci arkusza, należy użyć następującego kodu:

NSStoryboard *storyFile = [NSStoryboard storyboardWithName:@"Main" bundle:nil]; 
detailWindow = [storyFile instantiateInitialController]; 
[self.view.window beginSheet:detailWindow.window completionHandler:nil]; 

Aby zamknąć okno:

[self.view.window endSheet:detailWindow.window]; 

Aby zatrzymać zmianę rozmiaru okna, po prostu ustaw NSWindow minimalna/maksymalna wielkość w interfejsie konstruktora:

enter image description here

To jest to bardzo proste! (Nie zapomnij ustawić kontrolera okna, jako kontrolera początkowego).

Powiązane problemy