2015-05-07 4 views
10

C'è un modo per impedire che una vista venga ridimensionata se il controller di visualizzazione viene presentato come foglio utilizzando il metodo presentViewControllerAsSheet o utilizzando un seguito di stile " foglio".OS-X: Come impedire il ridimensionamento di un controller di visualizzazione presentato come foglio

Nota che le sequenze modali/di presentazione possono essere impiantate su un controller di finestra che può essere impostato come non ridimensionabile dallo storyboard stesso. Seguiti di tipo popover non sono ridimensionabili per impostazione predefinita.

Qualsiasi aiuto sarebbe apprezzabile. enter image description here

risposta

7

Hai provato a impostare il controller di visualizzazione foglio -preferredContentSize? In caso contrario, per quanto riguarda l'aggiunta di larghezza e altezza NSLayoutConstraint s alla vista del controller di visualizzazione su -viewDidLoad?

+0

PreferredContentSize risolve questo problema. – Abhinav

+1

stava cercando dappertutto fino a quando ho trovato questo post, il preferedContentSize funziona magico ... in Swift sotto viewDidLoad: self.preferredContentSize = NSSize (larghezza: 500.0, altezza: 700.0) – CRE8IT

+0

Non c'è modo di farlo in Interface Builder? –

0

i metodi precedenti non hanno funzionato per me. self.view.autoresizesSubviews = NO; questa linea in viewcontroller dovrebbe fare il trucco se i metodi di cui sopra non ha funzionato

0

Nessuna delle altre soluzioni ha funzionato per me, così ho finito per usare un NSWindow come controller foglio (piuttosto che una NSViewController da solo) .

Dichiarare un oggetto NSWindowController nel file di intestazione:

NSWindowController *detailWindow; 

Per aprire la finestra sotto forma di un foglio, utilizzare il seguente codice:

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

Per chiudere la finestra:

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

Per impedire il ridimensionamento del foglio finestra, è sufficiente impostare NSWindow minima/massima dimensione in costruttore di interfaccia:

enter image description here

Questo è tutto, super facile! (Non dimenticare di impostare il controller finestra, come il controller iniziale).