rilascio - tecnologia iphone




Nascondi UITabBar? (3)

Anch'io ho faticato con questo per un po '. Nascondere la barra delle schede è un passo nella giusta direzione, ma lascia un rettangolo nero dietro. Il trucco è ridimensionare il livello che supporta la vista di UIViewController.

Ho scritto una piccola demo qui con una soluzione:

https://github.com/tciuro/FullScreenWithTabBar

Spero che questo possa essere d'aiuto!

Nella mia app ho una barra delle linguette. E in alcuni punti di vista ho anche una barra degli strumenti. Quindi quando arrivo a quelle viste con una barra degli strumenti sembra brutto - due barre nella parte inferiore della vista. Ho pensato che sarebbe stata la soluzione migliore per nascondere una barra delle schede quando si inserivano quelle viste particolari. Ma non riuscivo a capire come farlo nel modo giusto. Ho provato a impostare la proprietà nascosta di tabBar di UITabBarController su YES, ma non ha funzionato. E ho anche cercato di fare la seguente cosa in qualunque vista io sia:

self.hidesBottomBarWhenPushed = YES;

Ma non ha funzionato altrettanto bene.

Qual è la soluzione giusta per questa situazione? Non voglio avere 2 barre in nessuna vista.

Grazie.


Devi usare impostare la proprietà hidesBottomBarWhenPushed su SÌ sul controller che stai spingendo e NON su UITabBarController.

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

Oppure è possibile impostare la proprietà quando si inizializza per la prima volta il controller che si desidera premere.


Non usare questa soluzione!

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





cocoa-touch