Gire la vista presentada y bloquee la orientación de la presentación del controller de vista

Estoy trabajando en la aplicación de iPad que solo admite orientación horizontal, quiero permitir que algunos controlleres de vista presentados admitan toda la orientación sin cambiar la orientación de presentación del controller de vista. Estoy apoyando toda la orientación en las configuraciones de Xcode, excepto al revés.

Código que estoy usando para presentar el controller de vista

ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"VC"]; vc.modalPresentationStyle = UIModalPresentationFormSheet; [self presentViewController:vc animated:YES completion:nil]; 

Código que estoy usando para permitir la orientación para el controller de vista presentado:

 - (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{ return YES; } 

¿Tu aplicación de tubo proporciona el mismo tipo de característica mientras reproduces video, alguna idea de cómo está funcionando?

Cualquier ayuda se agradecerá, gracias.

AppDelegate.m

 - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { if(_isAllModes) return UIInterfaceOrientationMaskAll; else return UIInterfaceOrientationMaskPortrait; } 

Su ViewController. Rotación:

 [(AppDelegate*)([UIApplication shanetworkingApplication].delegate) setIsAllModes:YES]; NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationPortrait]; [[UIDevice currentDevice] setValue:value forKey:@"orientation"]; 

Tuve un problema similar, pero las configuraciones del proyecto sobrescriben las configuraciones individuales de ViewController aplicadas mediante progtwigción. Lo que hice para resolver el problema fue dejar el único min de orientación aceptable en la configuration del proyecto y extenderlo en AppDelegate.m como a continuación

 - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window //newUX { return UIInterfaceOrientationMaskAll; } 

puede hacerlo mejor de todos modos, por ejemplo, si desea habilitar todas las orientaciones solo en un escenario específico, simplemente diciendo si el último viewController en la stack es el "all" -one, como a continuación

 - (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window //newUX { if([self.navController.viewControllers.lastObject isKindOfClass:[MyAllOrientationVC class]])//newUX return UIInterfaceOrientationMaskAll; else return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskLandscapeLeft|UIInterfaceOrientationMaskLandscapeRight; }