rotar rotacion quiero que pantalla gire girar gira desactivar ipad uiinterfaceorientation ios6 autoresizingmask iphone-5

ipad - rotacion - ¿No se puede manejar la orientación en iOS 6?



rotar pantalla iphone 6 (7)

Asegúrate de que toda tu orientación esté habilitada.

estoy usando

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

delegar para cambiar el marco de mi vista en función del tipo de orientación

es decir,

if(UIInterfaceOrientationIsLandscape(interfaceOrientation)) { self.view.frame=CGRectMake(0,0,500,300); } else { self.view.frame=CGRectMake(0,0,300,400); }

Cómo manejar la misma situación en iOS 6 que

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

ha sido desaprobado en iOS6.

Estoy usando el siguiente delegado para establecer todas las orientaciones.

-(NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationAllMask; }

Pero,

-(BOOL)shouldAutoRotate { return YES; }

no está siendo invocado. ¿Cómo manejar esta situación?


Asegúrese de que la configuración en el proyecto y destino permita las orientaciones para cada tipo de dispositivo.

Además, el código que tienes en shouldAutorotateToInterfaceOrientation: puedes poner en viewDidLayoutSubviews .


En el AppDelegate, he agregado el objeto ViewController a la ventana como

[self.window addSubView:viewControllerObj]

El problema fue con la línea anterior. La orientación funcionará correctamente con la línea anterior en iOS 5 pero en iOS, para que la orientación funcione correctamente, cambie la línea anterior con

[self.window setRootViewController:viewControllerObj]

Luego la aplicación gira cuando cambia la orientación.


Este método funciona bien para IOS 6 y versiones anteriores.

-(BOOL)rotationChanged:(UIInterfaceOrientation)interfaceOrientation { NSInteger orientation = [[UIDevice currentDevice] orientation]; UIWindow *_window = [[[UIApplication sharedApplication] delegate] window]; if ([PGPlatformUtils GetCurrentPlatform]==PGPlatformEnum_iPhone) { switch (orientation) { case 1: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (0)]; [_window setFrame:CGRectMake(0, 0, 320, 480)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES]; [UIView commitAnimations]; break; case 2: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (M_PI)]; [_window setFrame:CGRectMake(0, 0, 320, 480)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES]; [UIView commitAnimations]; break; case 3: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (M_PI / 2)]; [_window setFrame:CGRectMake(0, 0, 320, 480)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; [UIView commitAnimations]; break; case 4: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (- M_PI / 2)]; [_window setFrame:CGRectMake(0, 0, 320, 480)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES]; [UIView commitAnimations]; break; case 5: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (0)]; [_window setFrame:CGRectMake(0, 0, 320, 480)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIPrintInfoOrientationLandscape animated:YES]; [UIView commitAnimations]; break; default: break; } } else{ switch (orientation) { case 1: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (0)]; [_window setFrame:CGRectMake(0, 0, 768, 1024)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:YES]; NSLog(@"*** 1 Orientation Call 0"); [UIView commitAnimations]; break; case 2: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (M_PI)]; [_window setFrame:CGRectMake(0, 0, 768, 1024)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortraitUpsideDown animated:YES]; NSLog(@"*** 1 Orientation Call M_PI"); [UIView commitAnimations]; break; case 3: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (M_PI / 2)]; [_window setFrame:CGRectMake(0, 0, 768, 1024)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; NSLog(@"*** 1 Orientation Call M_PI/2"); [UIView commitAnimations]; break; case 4: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (- M_PI / 2)]; [_window setFrame:CGRectMake(0, 0, 768, 1024)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeLeft animated:YES]; NSLog(@"*** 1 Orientation Call - M_PI/2"); [UIView commitAnimations]; break; case 5: [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.0]; [_window setTransform:CGAffineTransformMakeRotation (0)]; [_window setFrame:CGRectMake(0, 0, 768, 1024)]; [[UIApplication sharedApplication] setStatusBarOrientation:UIPrintInfoOrientationLandscape animated:YES]; NSLog(@"*** 1 Orientation Call 0"); [UIView commitAnimations]; break; default: break; } } return YES; }


Manejo del problema de orientación de UINavigation en iOS 6

1 Crear una clase de categoría UINavigation + Rotación

2 poner a continuación los métodos en la clase UINavigation + Rotation.m

-(BOOL)shouldAutorotate { return [[self.viewControllers lastObject] shouldAutorotate]; } -(NSUInteger)supportedInterfaceOrientations { return [[self.viewControllers lastObject]supportedInterfaceOrientations]; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { if ([self.viewControllers count] == 0) { return UIInterfaceOrientationPortrait; } return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation]; }


Recuerda que en iOS 6 el manejo de la rotación es cuidadoso en la vista de los padres. Menos responsabilidad para los controladores de vista de los niños. Pero más molesto para nosotros que codifica todo sin el constructor de interfaces.


Utilice willAnimateRotationToInterfaceOrientation en iOS6.