web-dev-qa-db-ja.com

UITabBarを非表示にする方法?

私のアプリにはタブバーがあります。いくつかのビューでは、ツールバーも持っています。したがって、ツールバーでこれらのビューにアクセスすると、醜く見えます-ビューの下部にある2つのバー。これらの特定のビューに入るときにタブバーを非表示にするのが最善の解決策になると思いました。しかし、私はそれを正しい方法で行う方法を理解することができませんでした。 UITabBarControllerのtabBar非表示プロパティをYESに設定しようとしましたが、機能しませんでした。そして、私はどのような見方でも次のことを試みました:

self.hidesBottomBarWhenPushed = YES;

しかし、それもうまくいきませんでした。

この状況に対する正しい解決策は何ですか?どのビューにも2本のバーを配置したくありません。

40

インターフェイスビルダーには、タブバーに埋め込まれたビューコントローラーのチェックボックスがあります-プッシュ時にボトムバーを非表示にします。簡単なケースでは、今はコードでそれを行う必要はありません。

@Micahの場合

Hide bottom bar on Push.

13

このソリューションは使用しないでください!

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;
}

ソース

10
SAKrisT

私もしばらくこれに苦労しました。タブバーを非表示にすることは正しい方向への1つのステップですが、黒い長方形を残します。コツは、UIViewControllerのビューを支えるレイヤーのサイズを変更することです。

私は解決策をここに小さなデモを書いています:

https://github.com/tciuro/FullScreenWithTabBar

これが役に立てば幸いです!

9
titusmagnus