40

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

self.hidesBottomBarWhenPushed = YES;

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

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

4

5 に答える 5

68

UITabBarControllerではなく、プッシュしているコントローラーでhidesBottomBarWhenPushedプロパティをYESに設定する必要があります。

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

または、プッシュするコントローラーを最初に初期化するときにプロパティを設定できます。

于 2009-05-02T22:14:39.520 に答える
13

Interface Builderには、タブバーに埋め込まれたViewControllerのチェックボックスがあります-プッシュ時に下部のバーを非表示にします。簡単なケースでは、今すぐコードを介してそれを行う必要はありません。

@Micahの場合

プッシュ時に下部バーを非表示にします。

于 2013-04-11T07:31:28.900 に答える
9

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

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

ソース

于 2010-01-04T00:40:02.297 に答える
9

私もしばらくこれに苦労しました。タブバーを非表示にすることは正しい方向への一歩ですが、黒い長方形が残ります。秘訣は、UIViewControllerのビューを支えるレイヤーのサイズを変更することです。

私はここに解決策を含む小さなデモを書きました:

https://github.com/tciuro/FullScreenWithTabBar

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

于 2012-05-06T20:59:44.437 に答える
0

現在のビューのタブバーを非表示にする組み込みの方法はありません。

変数を使用してビューをプッシュするときに非表示にできhidesBottomBarWhenPushedます。

現在のビューでタブバーを非表示にする場合は、次の操作を実行できます。

ここの要点

UIKitは、アプリの再開時にタブバーを戻すように見えることに注意してください。したがって、通知をサブスクライブしてUIApplication.didBecomeActiveNotification、上記の関数を呼び出す必要があります。

于 2021-01-14T02:53:49.493 に答える