Sembunyikan bilah tab di aplikasi IOS swift

91

Saya mencoba mencari cara untuk menyembunyikan bilah tab di aplikasi iOS saya. Saya tidak peduli dengan animasi mewah atau apapun. Hanya sesuatu yang bisa saya masukkan ke fungsi ViewDidLoad ().

Robert
sumber
Setel ini sebelum menekan VC. vc.hidesBottomBarWhenPushed = trueharus melakukan pekerjaan itu. JANGAN menampilkan dan menyembunyikan tabbar secara manual.
abhimuralidharan

Jawaban:

214

Anda cukup menggunakan ini dalam ViewDidLoad()metode Anda .

self.tabBarController?.tabBar.hidden = true

Untuk Swift 3.0, 4.0, 5.0 :

self.tabBarController?.tabBar.isHidden = true

Atau Anda dapat mengubah posisi z dari bilah tab dengan cara ini:

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

dan jika Anda ingin menampilkannya lagi:

self.tabBarController?.tabBar.layer.zPosition = 0
Dharmesh Kheni
sumber
14
Dharmesh, terima kasih atas jawabannya. Ini berhasil menyembunyikan bilah tab, tetapi tampilan tabel tidak memenuhi layar. Hanya hitam di mana bilah tab seharusnya. Saya kira ada langkah lain untuk membuatnya pas dengan layar?
Robert
3
Tambahkan batasan untuk itu.
Dharmesh Kheni
2
Apa saja "kendala" untuk ditambahkan?
db0
Jika Anda menggunakan batasan, Anda dapat mengubah batasan ketinggian untuk itu atau Anda dapat mengubah bingkai tableView. @ db0
Dharmesh Kheni
5
Tetapi bilah tab masih akan menyentuh, coba ketuk di dekat tab mana pun dari bilah tab yang tidak terlihat. @DheshKheni
Shobhit C
141

Jawaban yang diterima berfungsi, tetapi transisi ke tampilan lain memiliki animasi yang berombak (Animasi tab Bar)

Juga ingin menambahkan meskipun solusi Kalpesh bekerja dengan sempurna untuk saya, saya menemukan bahwa setiap pengontrol tampilan memiliki atribut untuk hidesBottomBarWhenPushed (lihat storyboard.) Jika Anda ingin menyembunyikan bilah tab, Anda harus memberi tanda centang pada itu. Dan itu akan berhasil dengan baik.

masukkan deskripsi gambar di sini

Pembaruan: Saya tidak yakin apakah ini adalah hal yang diketahui, tetapi inilah yang dikatakan halaman dokumentasi apel:

Pengontrol tampilan yang ditambahkan sebagai anak dari pengontrol navigasi dapat menampilkan toolbar opsional di bagian bawah layar. Nilai properti ini pada pengontrol tampilan paling atas menentukan apakah toolbar terlihat. Jika nilai properti ini benar, toolbar disembunyikan. Jika nilai properti ini salah, bilah akan terlihat.

Saya pikir ini berarti Anda harus menetapkan nilai dasar hidesBottomBarWhenPushed di pengontrol tampilan paling atas (yang pertama di tumpukan navigasi.) Setelah Anda menyetelnya ke true, Anda dapat mengubah ke false atau true untuk viewcontrollers lain di tumpukan. Namun, jika nilai hidesBottomBarWhenPushed pengontrol tampilan teratas Anda salah, itu tidak akan menampilkan bilah tab untuk pengontrol lain di tumpukan navigasi.

Akshansh Thakur
sumber
2
itulah yang harus kita lakukan. Jauh lebih baik daripada jawaban lain jika Anda hanya ingin menyembunyikannya saat Anda menyajikan ViewController
Gabriel Goncalves
mengapa ini tidak berfungsi di Swift 4 ?? Saya sudah mencentang opsinya, tetapi masih muncul saat saya membuka pengontrol tampilan tertentu
ken
Ini juga menyembunyikan bilah tab untuk pengontrol tampilan apa pun yang ditambahkan ke tumpukan setelah ini. Apakah ada cara untuk mengembalikannya ke pengontrol tampilan berikutnya?
Justin Vallely
@JustinVallely Tolong beri tahu saya jika pembaruan berfungsi dalam jawaban
Akshansh Thakur
1
Terima kasih, jawaban yang diterima bermasalah bagi saya, ketika saya kembali ke tampilan tempat saya berasal, Tabbar untuk itu juga telah hilang!
Abed Naseri
79

Sebelum dorong set controller.hidesBottomBarWhenPushed = true

let objCreateEventVC = CreateEventVC()
objCreateEventVC.hidesBottomBarWhenPushed = true
self.navigationController?.pushViewController(objCreateEventVC, animated: false)
kalpesh jetani
sumber
Tidak berfungsi saat menambahkan banyak pengontrol dengansetViewControllers
KR
27

Tidak perlu menyetel properti isHidden tabBar.

Cukup, Pergi ke ViewController (di StoryBoard) -> Attribute inspector -> Di bawah bagian 'View Controller' pilih 'Hide Bottom Bar on Push' checkbox. Ini bekerja seperti pesona.

Jika Anda menggunakan cara 'isHidden' Anda perlu melakukan banyak penanganan, yaitu untuk membuatnya muncul kembali saat Anda kembali dan juga untuk menghapus ruang kosong bawah setelah menyembunyikan tabBar.

Tejas
sumber
3
Ini harus menjadi jawaban yang sebenarnya. Ini memungkinkan saya untuk menyetel batasan untuk elemen UI saya tanpa kerumitan.
Karthik Kannan
2
Hide Bottom Bar on Pushmemiliki animasi yang tidak menyenangkan, imo.
Teodor Ciuraru
Saat Anda kembali dari halaman ini, Tabbar sedikit membeku dan kembali lagi. Menurut Anda apa alasannya?
Yunus T.
3

Cepat 3.

self.tabBarController?.tabBar.isHidden = true
Ronny Kibet
sumber
3

Anda juga dapat mengaturnya dalam ekstensi (gunakan jawaban 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
    }
}
Yair hadad
sumber
2

Ini adalah cara terprogram untuk Swift 4.0, 4.1, 4.2, 5.0 dan yang lebih baru >:

tabBarController?.hidesBottomBarWhenPushed = true

atau

hidesBottomBarWhenPushed = true
J. Doe
sumber
@Tokopedia Benar. Di bagian pertanyaan / jawaban mana Anda membaca sesuatu tentang bilah alat?
J. Doe
Dari dokumentasi: Nilai Boolean yang menunjukkan apakah toolbar di bagian bawah layar disembunyikan saat pengontrol tampilan didorong ke pengontrol navigasi.
Nico S.
1
Pertanyaannya adalah tentang TabBar bukan ToolBar
Nico S.
@Tokopedia sama halnya dalam situasi ini ... lol. Jelas Anda bahkan tidak repot-repot mencobanya.
J. Doe
1
yang pertama tidak berfungsi, yang kedua harus ditambahkan saat melakukan segue atau sebelum mendorong pengontrol tampilan.
Gal Shahar
1

Untuk menyembunyikan navigationBar dan tabBar saya menggunakan fungsi selanjutnya:

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

    }

}

Ketika orientasi layar telah mengubah ketinggian tabBar juga berubah, jadi saya menggunakan fungsi selanjutnya untuk keluar dari layar penuh untuk mengubah ukuran tinggi:

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

Semoga bermanfaat untuk anda.

Alberto
sumber