Las soluciones de Saurahb y karlbecker_com son geniales, aunque pueden causar un efecto de estallido obvio cuando la vista contiene una tabla de mientras que la barra de pestañas anima una copia de seguridad. Hice algunas modificaciones y las combiné en una sola función (como una categoría en UITabBarController). No es completamente perfecto (animación de corrección retrasada) pero da buenos resultados con las tablas.
Si le gustan los bloques y categorías de animación, pruébelo. Orientación y dispositivo amigable.
UITabBarController + ShowHideBar.m:
#import "UITabBarController+ShowHideBar.h"
@implementation UITabBarController (ShowHideBar)
- (void) setHidden:(BOOL)hidden{
CGRect screenRect = [[UIScreen mainScreen] bounds];
float fHeight = screenRect.size.height;
if( UIDeviceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)){
fHeight = screenRect.size.width;
}
if(!hidden) fHeight -= self.tabBar.frame.size.height;
[UIView animateWithDuration:0.25 animations:^{
for(UIView *view in self.view.subviews){
if([view isKindOfClass:[UITabBar class]]){
[view setFrame:CGRectMake(view.frame.origin.x, fHeight, view.frame.size.width, view.frame.size.height)];
}else{
if(hidden) [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, fHeight)];
}
}
}completion:^(BOOL finished){
if(!hidden){
[UIView animateWithDuration:0.25 animations:^{
for(UIView *view in self.view.subviews)
{
if(![view isKindOfClass:[UITabBar class]])
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, fHeight)];
}
}];
}
}];
}
@end
UITabBarController + ShowHideBar.h:
#import <UIKit/UIKit.h>
@interface UITabBarController (ShowHideBar)
- (void) setHidden:(BOOL)hidden;
@end
Uso:
[self.tabBarController setHidden:YES];
[self.tabBarController setHidden:NO];
posible duplicado de [Iphone: ¿Es posible ocultar el TabBar?] (Http://stackoverflow.com/questions/1982172/iphone-is-it-possible-to-hide-the-tabbar) – Pang