2013-05-22 15 views
6

Domanda veloce di nuovo. Quando uso presentViewController per presentare un nuovo viewcontroller su quello corrente, è a schermo intero. Come faccio a presentare una dimensione specifica? O dovrei usare un altro metodo.PresentViewController senza schermo intero

Codice:

- (IBAction)showProfile:(id)sender { 
ProfileView *profileTop = [[ProfileView alloc] init]; 
profileTop.delegate = self; 

[self presentViewController:profileTop animated:YES completion:nil]; 
} 
+1

hai provato posizionamento e dimensionamento self.view.frame all'interno del controller della vista presentato di conseguenza? –

+0

possibile duplicato di [Come ridimensionare un UIPresentationFormSheet?] (Http://stackoverflow.com/questions/2457947/how-to-resize-a-uipresentationformsheet) – memmons

+0

Perché non stai usando addubview invece della vista modale? – utsabiem

risposta

7

Se si sta sviluppando un'applicazione per iPad allora si può fare uso della proprietà di viewController modalPresentationStyle, è necessario impostare per presentare viewController.

Ha 4 valori per quella variabile.

UIModalPresentationFullScreen = 0, 
UIModalPresentationPageSheet, 
UIModalPresentationFormSheet, 
UIModalPresentationCurrentContext 

È possibile selezionare quale suite è il migliore.

+0

Ho letto di questo ma non avevo idea di come implementarlo ... puoi elaborare il tuo codice? – Tarayaa

+1

Certo, per favore aggiungi questa linea 'profileTop.modalPresentationStyle = UIModalPresentationFormSheet; 'prima di presentare per allineare ProfileView al centro. –

+0

Questo non è esattamente quello che stavo per..ma è in realtà un'animazione davvero liscia. Immagino che dovrò leggere le UIModalPresentations – Tarayaa

6

Io suggerirei di fare un po 'più di ricerca, in particolare nel riferimento di Apple. Da segnalare, c'è questa citazione dal View Controller Programming Guide (http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/ModalViewControllers/ModalViewControllers.html):

stili di presentazione per modale Viste

Per applicazioni iPad, è possibile presentare contenuti utilizzando diversi stili. Nelle app per iPhone, le viste presentate coprono sempre la parte visibile della finestra, ma quando sono in esecuzione su un iPad, i controller di visualizzazione utilizzano il valore nella proprietà modalPresentationStyle per determinarne l'aspetto quando vengono presentati. Diverse opzioni per questa proprietà ti consentono di presentare il controller della vista in modo che riempia tutto o solo parte dello schermo.

E in particolare, sulla pagina di riferimento API per presentViewController (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/presentViewController:animated:completion :):

Su iPhone e iPod touch, la vista è sempre presentato a schermo intero. Su iPad, la presentazione dipende dal valore nella proprietà modalPresentationStyle.

Solo l'iPad sembra avere alcun supporto per i modali non a schermo intero.

+0

Sì, l'ho letto, sto sviluppando solo per iPad. – Tarayaa

+1

@Tarayaa Dovresti quindi cambiare i tag. – Sulthan

+0

Oops, la tua destra. – Tarayaa

0

È possibile utilizzare lo stesso codice. Quindi regola le dimensioni della vista nel file xib. Vedere la figura seguente size inspector

+0

Questo è qualcosa che ho provato prima, non ha funzionato. – Tarayaa

3

Su iPad si può semplicemente utilizzare:

[viewcontroller setModalPresentationStyle:UIModalPresentationFormSheet]; 

esempio:

LoginDialogViewController * login_dialog = [[LoginDialogViewController alloc] init]; 
[login_dialog setModalPresentationStyle:UIModalPresentationFormSheet]; 
[self presentViewController:login_dialog animated:true completion:nil];