Les solutions de Saurahb et de karlbecker_com sont excellentes, bien qu'elles puissent provoquer un effet d'éclatement évident lorsque la vue contient un élément de type aperçu de la table pendant que la barre d'onglets s'anime à nouveau. J'ai fait quelques modifications et l'ai combiné en une seule fonction (comme une catégorie sur UITabBarController). Ce n'est pas complètement parfait (animation de correction retardée) mais donne de bons résultats avec les tableaux.
Si vous aimez les blocs d'animation et les catégories, faites-en l'essai. Orientable et compatible avec les appareils.
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
Utilisation :
[self.tabBarController setHidden:YES];
[self.tabBarController setHidden:NO];
0 votes
Duplicata possible de Iphone : Est-il possible de masquer la barre d'onglets ?