web-dev-qa-db-ja.com

iOS TabbarViewControllerはタブバーを非表示にします

UITabbarViewControllerを実装するビューコントローラーがあり、タブバーを非表示にして自分でオーバーライドしたいのですが、

self.tabBar.hidden = YES;

タブバーは消えましたが、ビューの下部に空白の領域(青い領域)があります。空白領域が必要ないのですが、どうすれば修正できますか?ありがとうございました。

編集:青い領域は:

self.view.backgroundColor = [UIColor blueColor];
24
jxdwinter

アプリケーションでもまったく同じです。デフォルトのTabBarを非表示にするには、親のビューコントローラー(またはアプリのすべてのビューコントローラー)でhidesBottomBarWhenPushedメソッドをオーバーライドするだけです。

#pragma mark - Overriden UIViewController methods
- (BOOL)hidesBottomBarWhenPushed {
    return YES;
}

編集:この値はストーリーボードからも設定できます:

enter image description here

65
redent84

UITabbarViewControllerはおそらくスーパービューであり、すべての「内部」ビューの高さ= screenHeight - tabBarHeight - navBarHeightであるため、これを修正する簡単な方法はないと思います。

内部ビューコントローラのサイズを手動で変更できるかもしれませんが、AppleのAppStore送信プロセスで問題が発生する可能性があります。これは、一般的なiOSユーザーエクスペリエンスに違反しているためです。

1
martin

私のUITabBarControllerはコンテナビュー内にあります。 「プッシュ時にボトムバーを隠す」をチェックしても機能しませんでした。代わりに、タブバーコントローラーのサブクラスを作成し、プログラムでタブバーを非表示にしました。

class FooTabBar: UITabBarController {
  override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()
    self.tabBar.isHidden = true
  }
}
1
Mark Suman

そして、これはSwiftでオーバーライド(UIViewController)を行う方法です:

override var hidesBottomBarWhenPushed: Bool {
    get { return true }
    set { super.hidesBottomBarWhenPushed = newValue }
}
1