Pregunta

Tengo una pregunta bastante simple pero la respuesta no es tan fácil.

Quiero ocultar una UITabBar cuando cambie mi orientación.

Miré de 2 maneras:

Forma de marco

myAppDelegate.tabBarController.tabBar.frame = CGRectMake(<<bottomOfScreen>>);

Funciona bien pero tengo un área en blanco, así que intenté jugar con tabBarController.view.frame et myViewController.view.frame pero no obtuve ningún buen resultado.

Manera del controlador de navegación

myOtherVC.hideTabBarWhenPushed = YES;
[self.navigationController pushViewController:myOtherVC animated:NO];

Funciona pero no es una buena solución para mi aplicación

Update:

[appDelegate.tabBarController.view removeFromSuperview];
[self.view removeFromSuperview]; [appDelegate.window addSubview:self.view];
self.view.frame = CGRectMake(0,0,480,320);

Funciona bien pero ya no se autorrota (y, por supuesto, no cambié la debería autorizar y siempre devuelve SÍ)


¿Cómo puedo ocultar mi tabBar y hacer que la vista actual ocupe su espacio?


Gracias

¿Fue útil?

Solución

Puede usar la solución actual combinada con:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

para detectar la rotación. (Creo que combina esto con view.transform = CGAffineTransformMakeRotation para que gire ...?)

Otros consejos

Dos formas en las que creo que puedes hacer esto fácilmente serían:

  1. para volver a cargar los objetos en el controlador tabBar, con hidesBottomBarWhenPushed establecido en YES para los viewControllers que desea ocultar.
  2. La otra opción sería simplemente hacer que su vista sea la única vista de la ventana cuando se gira el teléfono y luego volver a colocar la pestañaBarController.view en la ventana cuando el teléfono se gira de nuevo

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top