2010-02-13 19 views

risposta

22

Un UITabBar eredita da UIView, quindi puoi nasconderlo e animarlo come faresti con un UIView standard.

- (void) hideTheTabBarWithAnimation:(BOOL) withAnimation { 
    if (NO == withAnimation) { 
     [theTabBar setHidden:YES]; 
    } else { 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDelegate:nil]; 
     [UIView setAnimationDuration:0.75]; 

     [theTabBar setAlpha:0.0];  

     [UIView commitAnimations]; 
    } 
} 
+1

Grazie per il vostro consiglio Guillaume – RAGOpoR

+0

Siete welc ome. Felice di aiutare :) – Guillaume

+0

Ha reso la mia giornata! <3 –

20

Dovreste usare questo codice:

self.tabBarController.tabBar.hidden=YES; 
+0

bel suggerimento grazie – lomec

+0

Grazie! Semplice e ben fatto. – Felipe

+1

Sta lasciando uno spazio nero per me al posto della barra delle schede ... Non è una buona soluzione – Flupp

5

È anche possibile nasconderlo utilizzando la finestra di ispezione attributi:

enter image description here

ma non con un'animazione.

+0

Questo è semplice e perfetto –

0

un'altra soluzione che uso: metodi di chiamata quando si desidera nascondere Menu:

//Show Tab Bar 
[self showTabBar:self.tabBarController]; 
//If You Want to Hide/Show Navigation Bar Also 
[self.navigationController setNavigationBarHidden: NO animated:YES]; 

//Hide Tab Bar 
[self hideTabBar:self.tabBarController]; 
//If You Want to Hide/Show Navigation Bar Also 
[self.navigationController setNavigationBarHidden: YES animated:YES]; 

Metodi:

- (void)hideTabBar:(UITabBarController *) tabbarcontroller 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 

for(UIView *view in tabbarcontroller.view.subviews) 
{ 
    if([view isKindOfClass:[UITabBar class]]) 
    { 
     [view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width,    
     view.frame.size.height)]; 
    } 
    else 
    { 
     [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y,   
     view.frame.size.width, 480)]; 
    } 
} 

[UIView commitAnimations]; 
} 

- (void)showTabBar:(UITabBarController *) tabbarcontroller 
{ 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.3]; 

for(UIView *view in tabbarcontroller.view.subviews) 
{ 
    if([view isKindOfClass:[UITabBar class]]) 
    { 
     [view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width,  
     view.frame.size.height)]; 

    } 
    else 
    { 
     [view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, 
     view.frame.size.width, 431)]; 
    } 
} 

[UIView commitAnimations]; 
} 
1
-(void)hideTabBar 
{ UITabBarController * tabbarcontroller= appDelegate.tabBarVC; 
     if (tabbarcontroller.tabBar.isHidden) 
    { 
     return; 
    } 
    tabbarcontroller.tabBar.hidden=YES; 
    CGRect frm=tabbarcontroller.view.frame; 
    frm.size.height += tabbarcontroller.tabBar.frame.size.height; 
    tabbarcontroller.view.frame=frm; 
} 
-(void)showTabBar 
{ UITabBarController * tabbarcontroller=appDelegate.tabBarVC; 
    if (!tabbarcontroller.tabBar.isHidden) 
    { 
     return; 
    } 
    CGRect frm=tabbarcontroller.view.frame; 
    frm.size.height -= tabbarcontroller.tabBar.frame.size.height; 
    tabbarcontroller.view.frame=frm; 
    tabbarcontroller.tabBar.hidden=NO; 
} 
here appDelegate is = (AppDelegate *) [[UIApplication sharedApplication] delegate] 
tabBarVc is UITabBarController *tabBarVC defined as property in app delegate 
hope this helps 
Problemi correlati