Questa risposta si riferisce alle domande poste nei commenti del post del PO:
Per forzare la visualizzazione di una vista in un determinato orientamento, visualizzare quanto segueWillAppear:
UIApplication* application = [UIApplication sharedApplication];
if (application.statusBarOrientation != UIInterfaceOrientationPortrait)
{
UIViewController *c = [[UIViewController alloc]init];
[self presentModalViewController:c animated:NO];
[self dismissModalViewControllerAnimated:NO];
}
È un po 'un trucco, ma questo costringe UIViewController
a essere presentato in verticale anche se il controller precedente era orizzontale
AGGIORNAMENTO per iOS7
I metodi precedenti sono ora deprecati, quindi per iOS 7 utilizza quanto segue:
UIApplication* application = [UIApplication sharedApplication];
if (application.statusBarOrientation != UIInterfaceOrientationPortrait)
{
UIViewController *c = [[UIViewController alloc]init];
[c.view setBackgroundColor:[UIColor redColor]];
[self.navigationController presentViewController:c animated:NO completion:^{
[self.navigationController dismissViewControllerAnimated:YES completion:^{
}];
}];
}
È interessante notare che, al momento della scrittura, sia presente o respingere deve essere animata. In caso contrario, verrà visualizzata una schermata bianca. Non ho idea del perché questo lo faccia funzionare, ma funziona! L'effetto visivo è diverso a seconda di quale è animato.