Cómo forzar que la TV salga del iPad para estar en modo horizontal, incluso si el iPad está en modo vertical

Estoy usando un cable HDMI para llevar la salida de mi pantalla de iPad a un televisor. si guardo el iPad en modo horizontal, la salida en TV se muestra en modo horizontal. y si lo gire a la salida vertical en el televisor, también cambiará al modo vertical.

¿Hay alguna forma de restringir esto, es decir, incluso si giro el iPad a la orientación vertical, la salida en el televisor debería permanecer en el modo Paisaje

Aquí hay algunas imágenes que aclararán mi pregunta.

esta es la orientación de mi iPad …

introduzca la descripción de la imagen aquí

Esto es lo que estoy recibiendo …

introduzca la descripción de la imagen aquí

Esto es lo que quiero……

introduzca la descripción de la imagen aquí O introduzca la descripción de la imagen aquí

De perder el time con la progtwigción he llegado hasta aquí …

Hice un button sobre un UIImageView con alguna image, en una plantilla de aplicación de vista única de Xcode con un método IBaction este método tiene el siguiente código

- (IBAction)screenButton:(id)sender { NSLog(@"Screen Count %d",[[UIScreen screens]count]); if([[UIScreen screens]count] > 1) { CGSize max; UIScreenMode *maxScreenMode; for(int i = 0; i < [[[[UIScreen screens] objectAtIndex:1] availableModes]count]; i++) { UIScreenMode *current = [[[[UIScreen screens]objectAtIndex:1]availableModes]objectAtIndex:i]; if(current.size.width > max.width) { max = current.size; maxScreenMode = current; } } //UIScreen *external = [[UIScreen screens] objectAtIndex:0]; UIScreen *external = [[UIScreen screens] objectAtIndex:1]; external.currentMode = maxScreenMode; //external_disp = [externalDisplay alloc]; //external_disp.drawImage = drawViewController.drawImage; // ExternalDisplayOn = TRUE; //UIImageView *extView = [[UIImageView alloc] init]; _extView.hidden=FALSE; _extView.frame = external.bounds;//MyMainScrollView.frame; UIWindow *newwindow = [[UIWindow alloc] initWithFrame:_extView.frame]; //UIWindow *newwindow = [[UIWindow alloc]; [newwindow addSubview:_extView]; newwindow.screen = external; newwindow.hidden=NO; [[[UIAlertView alloc] initWithTitle:@"Alert Showed" message:[NSString stringWithFormat:@"_extView.frame X %f, Y %f, W %f, H %f, Screen Count %d",_extView.frame.origin.x,_extView.frame.origin.y,_extView.frame.size.width,_extView.frame.size.height,[[UIScreen screens]count]] delegate:nil cancelButtonTitle:@"OK!" otherButtonTitles:nil, nil] show]; [newwindow makeKeyAndVisible]; } } 

Pude resolver mi problema hasta cierto punto, pero el problema que estoy enfrentando es como el siguiente

cada vez que ejecuto la aplicación y la mantengo en modo vertical, la salida en TV es la réplica exacta de la pantalla de mi iPad.

ahora cuando presiono el button UIB que he asignado el código anterior. un UIAlertView aparece en la pantalla del iPad (pero no en la pantalla del televisor). y la orientación en la TV cambia a Landscape con mi iPad en modo Retrato (en realidad, esto era exactamente lo que realmente quería hacer) …

pero cuando presiono el button cancelar de UIalertView para descartar la vista de alerta. la orientación en la salida de TV vuelve a cambiar al modo vertical ….

¿Hay alguna forma de prevenir lo que sucede en mi caso, cuando aparece un UIAlertView? esto resolvería el problema …

No sé si mi idea ayuda o si ya lo programó de esta manera.

En el inspector de proyecciones, puede forzarlo a que el iPad tenga cierta orientación. Entonces tu aplicación solo se ejecuta en esta orientación.

¿Ayuda?

Debería hacer un UIViewController por separado para su newwindow.rootViewController donde puede definir orientaciones compatibles apropiadas – https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref / occ / instm / UIViewController / supportedInterfaceOrientations

Podría intentar configurar una transformación de 90 grados en la Vista y cambiar sus límites a los límites de la pantalla pero con los componentes de tamaño intercambiados.

Algo como:

 CGRect screenBounds = external.bounds; _extView.transform = CGAffineTransformMakeRotation((CGFloat)M_PI_2); _extView.bounds = CGRectMake(0,0,screenBounds.size.height, screenBounds.size.width); 

Puede configurar la orientación de sus aplicaciones como desee usando el delegado de la aplicación.

 - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { NSLog(@"Interface orientation Portrait = %@",enablePortrait); if(wantAppliactionTobeLandscape) return UIInterfaceOrientationMaskLandscapeRight; else return UIInterfaceOrientationMaskPortrait; } 

haga un bool en consecuencia y configure eso según sea necesario.