2012-04-16 19 views
5

Sto lavorando su Xcode 4.2 e sto sviluppando un'applicazione in cui voglio che la schermata del menu utilizzi una vista divisa. In realtà, tutto ciò di cui ho bisogno di Split View Controller per è dividere alcune delle opzioni di menu nel riquadro sinistro e nel pannello di destra. Voglio essere in grado di impostare dimensioni personalizzate per i controller di visualizzazione principale e di dettaglio, ma nulla sembra funzionare per me. Ho provato ad aggiornare le dimensioni di frame per ogni controller della vista con un codice simile:Ridimensiona i controller di visualizzazione principale e di dettaglio in un controller di visualizzazione divisa?

[self.view setFrame:CGRectMake(0, 0, 768, 502)]; 

nelle funzioni viewDidLoad, ma che non sembra interessare nulla.

C'è un modo per impostare le dimensioni personalizzate per i controller di visualizzazione principale e di dettaglio di un controller di visualizzazione divisa senza creare un'istanza dei controller di visualizzazione nel file AppDelegate.m? Voglio essere in grado di modificare ciascuno dei controller di visualizzazione nello storyboard poiché sono schermate di menu con molti pulsanti e così via.

risposta

10

Modifica: In iOS 8+, le larghezze relative possono essere modificate specificando le proprietà minimum/maximumPrimaryColumnWidth o preferredPrimaryColumnFraction.

La risposta sotto è ancora vero per iOS < 8:


Non è possibile modificare le dimensioni di un controller della vista divisa.

Vedi qui: http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html

"La classe UISplitViewController è un controller di vista contenitore che gestisce due lastre di informazioni la prima lastra ha una larghezza fissa di 320 punti e un'altezza che corrisponde alla altezza della finestra visibile il secondo.. riquadro riempie lo spazio rimanente. "

+0

Hmm, ok, grazie. C'è qualche altra soluzione che potrei potenzialmente usare? Tutto ciò di cui ho veramente bisogno è una vista con due riquadri verticali in cui posso scegliere una dimensione per ciascuno. – generaltsow

+0

È possibile creare una vista grande con due viste e assegnare la visualizzazione di ciascuna di esse nel codice. –

4

Utilizzare MGSplitViewController. Offre API simili a UIViewController, ma offre funzionalità aggiuntive, come la posizione di divisione, che è ciò di cui hai bisogno.

+0

Esiste una versione più recente di questo controller di visualizzazione? Sembra datato e non supportato. Funziona su iOS7, tuttavia. – fatuhoku

+0

@fatuhoku Non sono sicuro, ho smesso di seguire 'MGSplitViewController' e ho creato il mio wrapper per' UISplitViewController' che mi ha permesso di ottenere ciò di cui avevo bisogno. Per essere onesti, se dovessi fare un controllore split view ora, farei uno nuovo custom invece di usare 'MGSplitViewController', dato che è davvero abbastanza facile da realizzare con il contenimento del controller di visualizzazione genitore/figlio. –

+0

Sì, usare le visualizzazioni del contenitore ha funzionato bene per me, anche così in realtà. Neanche io ho usato MGSplitViewController alla fine. – fatuhoku

-1
- (CGFloat)splitView:(NSSplitView *)splitView constrainMinCoordinate:(CGFloat)proposedMinimumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 

    return proposedMinimumPosition + 238; 
} 

- (CGFloat)splitView:(NSSplitView *)splitView constrainMaxCoordinate:(CGFloat)proposedMaximumPosition ofSubviewAt:(NSInteger)dividerIndex; 
{ 
    return proposedMaximumPosition - 200; 
} 

prima che il metodo delegato sopra aggiungere [splitView addDelegate:self];

+0

Questi metodi sono per Mac, con NSSplitViewDelegate. L'OP non specificava l'app per Mac o iOS, tuttavia hanno un tag che dice 'uisplitviewcontroller' che è per iOS. – cnotethegr8

Problemi correlati