Ho un UITabBarController presentato in modalità verticale. In una delle schede ho un pulsante che mostra un UIViewController modally (Un semplice storyboard seguito esegue l'azione).Modal View Controller forza Orientamento orizzontale in iOS 6
Desidero che questa vista modale venga visualizzata in modalità orizzontale, ma non riesco a farla girare automaticamente.
ho questo nel controller di vista modale
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
ho aggiunto landscapeLeft alle .plist supportato orientamenti (anche se questo permette anche la TabBar di ruotare, che io non voglio)
ho anche aggiunto questo al viewDidLoad della vista modale
[UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft;
ma io proprio non riesco a farlo ruotare da sola.
Grazie
EDIT ----
Sembra shouldAutoRotate è nemmeno essere chiamato!
Inoltre, sto provando a rilevare l'orientamento e questo codice sotto mostra sempre 2, indipendentemente dall'orientamento!
if ([[UIDevice currentDevice] orientation] == UIInterfaceOrientationPortrait) {
NSLog(@"1");
self.hostView.frame = CGRectMake(0, 60, 200, 255);
} else {
NSLog(@"2");
self.hostView.frame = CGRectMake(0, 45, 480, 255);
}
EDIT 2 ---
Il mio male. Suppongo che avrei dovuto dire che stavo usando iOS 6. Il display ruota automaticamente su iOS 5. shouldAutorotateToInterfaceOrientation è deprecato quindi ho bisogno di leggere i nuovi metodi.
dalla mia precedente esperienza con questo, non c'è modo di forzare una viewController ad apparire in un orientamento specifico. Puoi scegliere se consentire o meno l'orientamento di cambiare, ma non forzarlo. è stato un peccato per me ... – KDaker
Questo è davvero un po 'stupido! Ho un grafico che si adatta solo a Landscape. Quindi stai dicendo che Apple vuole che lo mostri fottuto finché l'utente non gira il suo dispositivo. Non sembra corretto, anche se non ho trovato una soluzione, quindi potresti avere ragione. – Darren