IOSswiftアプリでタブバーを非表示にする


91

iOSSwiftアプリでタブバーを非表示にする方法を見つけようとしています。派手なアニメーションなどは気にしません。ViewDidLoad()関数に入れることができるものです。


VCをプッシュする前にこれを設定します。vc.hidesBottomBarWhenPushed = true仕事をする必要があります。タブバーを手動で表示および非表示にしないでください。
abhimuralidharan

回答:


213

これをViewDidLoad()メソッドで使用するだけです。

self.tabBarController?.tabBar.hidden = true

スウィフト3.0、4.0、のために5.0

self.tabBarController?.tabBar.isHidden = true

または、次の方法でタブバーのz位置を変更できます。

self.tabBarController?.tabBar.layer.zPosition = -1

もう一度表示したい場合は、次のようにします。

self.tabBarController?.tabBar.layer.zPosition = 0

14
ダーメッシュ、返事ありがとう。これにより、タブバーは正常に非表示になりますが、テーブルビューが画面全体に表示されません。タブバーがあるべき場所は真っ黒です。画面に合わせるための別のステップがあると思いますか?
ロバート

3
そのための制約を追加します。
Dharmesh Kheni 2015

2
追加する「制約」とは何ですか?
db0 2016年

制約を使用した場合は、その高さ制約を変更するか、tableViewのフレームを変更できます。@ db0
Dharmesh Kheni 2016年

5
ただし、タブバーは引き続きタッチされます。非表示のタブバーの任意のタブの近くをタップしてみてください。@DharmeshKheni
Shobhit C

140

受け入れられた回答は機能しますが、他のビューへの遷移には途切れ途切れのアニメーションがあります(タブバーアニメーション)

また、Kalpeshのソリューションは完全に機能しましたが、すべてのビューコントローラーにhidesBottomBarWhenPushed(ストーリーボードを確認)の属性があることがわかりました。タブバーを非表示にする場合は、それにチェックマークを付ける必要があります。そしてそれはうまくいくでしょう。

ここに画像の説明を入力してください

更新:これが既知のものかどうかはわかりませんが、アップルのドキュメントページには次のように書かれています。

ナビゲーションコントローラーの子として追加されたビューコントローラーは、画面の下部にオプションのツールバーを表示できます。最上位のViewControllerのこのプロパティの値によって、ツールバーが表示されるかどうかが決まります。このプロパティの値がtrueの場合、ツールバーは非表示になります。このプロパティの値がfalseの場合、バーが表示されます。

これは、最上位のビューコントローラー(ナビゲーションスタックの最初のビューコントローラー)でhidesBottomBarWhenPushedの基本値を設定する必要があることを意味すると思います。これをtrueに設定すると、他のビューコントローラーに対してfalseまたはtrueに変更できます。スタック。ただし、最上位のビューコントローラーのhidesBottomBarWhenPushed値がfalseの場合、ナビゲーションスタック上の他のコントローラーのタブバーは表示されません。


2
それが私たちがすべきことです。ViewControllerを提示している間だけ非表示にしたい場合は、他の回答よりもはるかに優れています
Gabriel Goncalves

なぜこれがSwift4で機能しないのですか?私はすでにオプションにチェックマークを付けていますが、その特定のビューコントローラーに移動するとまだ表示されます
ken

これにより、この後にスタックに追加されるすべてのViewControllerのタブバーも非表示になります。それらの後続のViewControllerのためにそれを戻す方法はありますか?
Justin Vallely 2018

@JustinVallely回答で更新が機能するかどうかをお知らせください
Akshansh Thakur 2018

1
おかげで、受け入れられた答えは私にとって問題がありました、私が来ていたビューに戻ると、そのためのタブバーも消えました!
Abed Naseri 2018年

79

プッシュセットの前コントローラー.hidesBottomBarWhenPushed = true

let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)

コントローラーの束を追加する場合は機能しませんsetViewControllers
KR

27

tabBarのisHiddenプロパティを設定する必要はありません。

単純に、ViewController(StoryBoard内)->属性インスペクター-> [View Controller]セクションで、[Hide Bottom Bar onPush]チェックボックスを選択します。これは魅力のように機能します。

'isHidden'の方法を使用する場合は、多くの処理を行う必要があります。つまり、戻ったときに再び表示されるようにし、tabBarを非表示にした後に下部の空のスペースを削除します。


3
これが実際の答えになるはずです。これにより、面倒なことなくUI要素の制約を設定できました。
Karthik Kannan 2017

2
Hide Bottom Bar on Push不快なアニメーション、imoがあります。
Teodor Ciuraru 2018

このページから戻ると、Tabbarが少しフリーズして戻ってきます。その理由は何だと思いますか?
YunusT.19年


3

拡張機能で設定することもできます(Dharmesh Kheniの回答を使用)

extension UITabBar {
func tabsVisiblty(_ isVisiblty: Bool = true){
    if isVisiblty {
        self.isHidden = false
        self.layer.zPosition = 0
    } else {
        self.isHidden = true
        self.layer.zPosition = -1
    }
}

2

これは、Swift 4.0、4.1、4.2、5.0以降のプログラムによる方法です>:

tabBarController?.hidesBottomBarWhenPushed = true

または

hidesBottomBarWhenPushed = true

@NicoS。本当。質問/回答のどこでツールバーについて何か読んでいますか?
J.Doe19年

ドキュメントから:ViewControllerがNavigationControllerにプッシュされたときに、画面下部のツールバーが非表示になっているかどうかを示すブール値。
ニコ

1
質問はツールバーではなくタブバーについてです
ニコ

@NicoS。この状況でも同じです...笑。明らかに、あなたはそれを試してみることさえ気にしませんでした。
J.Doe19年

1
1つ目は機能しません。セグエを実行するとき、またはView Controllerを押す前に、2つ目を追加する必要があります。
ギャル

1

ナビゲーションバーとタブバーを非表示にするには、次の関数を使用します。

var tabBarHeight : CGFloat!

func fullScreenAction(){
    if navigationController?.isNavigationBarHidden ?? false {
        //Show navigationBar
        navigationController?.setNavigationBarHidden(false, animated: false)

        //Show tabBar
        tabBarController?.tabBar.isHidden = false
        //Update the height of tabBar
        if (!(tabBarController?.tabBar.frame.size.height.isEqual(to: 0))!) {
            tabBarHeight = self.tabBarController?.tabBar.frame.size.height
        }
        tabBarController?.tabBar.frame.size.height   = tabBarHeight
    } else {
        //Hide navigationBar
        navigationController?.setNavigationBarHidden(true, animated: false)

        //Hide tabBar
        tabBarController?.tabBar.isHidden = true
        //Update the height of tabBar
        tabBarHeight = tabBarController?.tabBar.frame.size.height
        tabBarController?.tabBar.frame.size.height   = 0

    }

}

画面の向きがtabBarの高さも変更した場合は、次の関数を使用して全画面を終了し、高さのサイズを変更します。

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    if navigationController?.isNavigationBarHidden ?? false {
        navigationController?.setNavigationBarHidden(false, animated: false)
        tabBarController?.tabBar.isHidden = false
    }
}

お役に立てば幸いです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.