rotate rapido control atajos acceso iphone rotation

rapido - control center iphone



¿Cómo puedo mostrar una UIView en el paisaje? (4)

He analizado todas las preguntas hasta el momento y ninguna parece responder realmente a esta pregunta.

Creé un UITabBarController y agregué varios controles de vista a él. La mayoría de las vistas se ven en vertical, pero una debe verse en el paisaje. No quiero usar el acelerómetro o detectar cuando el usuario gira el dispositivo, solo quiero mostrar la vista en modo horizontal cuando eligen esa vista desde la pestaña en la parte inferior.

Quiero que se realicen las animaciones habituales, como la eliminación de pestañas, la rotación de la vista, etc., cuando eligen ese elemento, y sucede lo contrario cuando eligen una vista diferente.

¿No hay una propiedad o método incorporado para decirle al sistema en qué orientación mostrar la vista?

Sobrescribir el método debería ... no hace absolutamente nada hasta donde yo sé.

El tipo de respuesta que NO agradecería es "RTFM" porque ya la tengo, y cualquiera que haya desarrollado para el iPhone hasta ahora sabe que hay muy poca utilidad de M a F-ing R.


Una publicación en un foro que podría ayudar. La respuesta breve es que debe girar manualmente la vista o el controlador una vez que se ha dibujado la vista, en el método viewWillAppear:

CGAffineTransform landscapeTransform = CGAffineTransformMakeRotation(degreesToRadian(90)); landscapeTransform = CGAffineTransformTranslate (landscapeTransform, +80.0, +100.0); [[appDelegate navController].view setTransform:landscapeTransform];


Esto es lo que estoy haciendo para hacer esto:

primero, ponga esta definición en la parte superior de su archivo, justo debajo de #imports:

#define degreesToRadian(x) (M_PI * (x) / 180.0)

luego, en el método viewWillAppear:

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { self.view.transform = CGAffineTransformIdentity; self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); self.view.bounds = CGRectMake(0.0, 0.0, 480, 320); }

si quieres que esté animado, puedes envolverlo todo en un bloque de animación, así:

[UIView beginAnimations:@"View Flip" context:nil]; [UIView setAnimationDuration:1.25]; [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; [[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO]; if (self.interfaceOrientation == UIInterfaceOrientationPortrait) { self.view.transform = CGAffineTransformIdentity; self.view.transform = CGAffineTransformMakeRotation(degreesToRadian(90)); self.view.bounds = CGRectMake(0.0, 0.0, 480, 320); } [UIView commitAnimations];


Reemplace el método de Orientación en su clase de controlador y forzarlo a Horizontal de esta manera:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Overriden to allow any orientation. return UIInterfaceOrientationIsLandscape(interfaceOrientation); }

Simple y eficiente!


shouldAutorotateToInterfaceOrientation solo funciona si todas las vistas en tabbarcontroller o todos los controladores de vista en el controlador de navegación acuerdan una rotación.