2009-05-02 12 views
39

En mi aplicación tengo una barra de pestañas. Y en algunas vistas también tengo una barra de herramientas. Entonces, cuando llego a esas vistas con una barra de herramientas, se ve feo: dos barras en la parte inferior de la vista. Pensé que sería una mejor solución para ocultar una barra de pestañas al ingresar esas vistas particulares. Pero no pude entender cómo hacerlo de manera correcta. Intenté establecer la propiedad oculta tabBar de UITabBarController en SÍ, pero no funcionó. Y así tratado de hacer lo siguiente en cualquier punto de vista que soy:Ocultar UITabBar?

self.hidesBottomBarWhenPushed = YES; 

Pero no funcionó así.

¿Cuál es la solución correcta para esta situación? No quiero tener 2 barras en ninguna vista.

Gracias.

Respuesta

67

Tienes que usar establecer hidesBottomBarWhenPushed propiedad a YES en el controlador que estás presionando y NO al UITabBarController.

otherController.hidesBottomBarWhenPushed = YES; 
[navigationController pushViewController: otherController animated: TRUE]; 

O puede establecer la propiedad cuando inicializa por primera vez el controlador que desea presionar.

+1

I tienen tres controladores de vista de que el UITabBarController puede presentar. En el segundo controlador de vista, puse 'self.hidesBottomBarWhenPushed = YES' en' initWithNibName: bundle: '. Cuando probé el tapping en el segundo controlador de vista, el UITabBar todavía estaba allí. – JoJo

+1

Intenté un nuevo proyecto con ios7 - sin efecto – Adam

+0

Cuando regreso a la pantalla, tengo un espacio negro en la parte superior de la barra de pestañas. – manonthemoon

10

¡No utilice esta solución!

BOOL hiddenTabBar; 
UITabBarController *tabBarController; 

- (void) hideTabBar { 

    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.4]; 
    for(UIView *view in tabBarController.view.subviews) 
    { 
      CGRect _rect = view.frame; 
      if([view isKindOfClass:[UITabBar class]]) 
      { 
       if (hiddenTabBar) { 
        _rect.origin.y = [[UIScreen mainScreen] bounds].size.height-49; 
        [view setFrame:_rect]; 
       } else { 
        _rect.origin.y = [[UIScreen mainScreen] bounds].size.height; 
        [view setFrame:_rect]; 
       } 
      } else { 
       if (hiddenTabBar) { 
        _rect.size.height = [[UIScreen mainScreen] bounds].size.height-49; 
        [view setFrame:_rect]; 
       } else { 
        _rect.size.height = [[UIScreen mainScreen] bounds].size.height; 
        [view setFrame:_rect]; 
       } 
      } 
    }  
    [UIView commitAnimations]; 

    hiddenTabBar = !hiddenTabBar; 
} 

Source

+1

Usando una barra de pestañas personalizada (ALTabBar). Este trabajó para mí. En cambio, para admitir pantallas de 4 ", he cambiado 480 a [[UIScreen mainScreen] bounds] -> size.height –

+1

genial, pero ... intente no usar valores fijos como 431 o 480. Siempre debe escribir código para ejecutar en cualquier tamaño de pantalla! – orafaelreis

+0

Si realmente quieres cambiar el tamaño de la vista (no solo ocultar tabBar) establece self.tabBarController.tabBar.hidden = hiddenTabBar; – orafaelreis

8

también tuve problemas con esto por un tiempo. Ocultar la barra de pestañas es un paso en la dirección correcta, pero deja un rectángulo negro atrás. El truco es cambiar el tamaño de la capa que respalda la vista de UIViewController.

me han escrito una pequeña demostración aquí con una solución:

https://github.com/tciuro/FullScreenWithTabBar

espero que esto ayude!

+0

Esta solución funciona bien para mí, gracias titusmagnus – avmauricio

+0

Classy, ​​gracias. –

+0

Awesome tip, wish I podría votar más. ¡Ni siquiera sabía que HAY una capa que respalda el UIViewController! – ryan0

11

El generador de interfaz tiene la casilla de verificación para controlador de vista incrustado en la barra de pestañas - Oculta la barra inferior al pulsar. En casos fáciles, no es necesario hacerlo a través del código ahora.

Para @Micah

Hide bottom bar on push.

+0

Esto funcionó para mí en ios7 donde establecer el mismo valor en el código no – Adam

+0

¿Dónde está esta casilla de verificación? – Micah

+1

@Micah ver la publicación actualizada. –

Cuestiones relacionadas