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 ().
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:
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.
Pembaruan: Saya tidak yakin apakah ini adalah hal yang diketahui, tetapi inilah yang dikatakan halaman dokumentasi apel:
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.
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 = trueself.navigationController?.pushViewController(objCreateEventVC, animated: false)
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.
@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!funcfullScreenAction(){
if navigationController?.isNavigationBarHidden ?? false {
//Show navigationBar
navigationController?.setNavigationBarHidden(false, animated: false)
//Show tabBar
tabBarController?.tabBar.isHidden = false//Update the height of tabBarif (!(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:
vc.hidesBottomBarWhenPushed = true
harus melakukan pekerjaan itu. JANGAN menampilkan dan menyembunyikan tabbar secara manual.Jawaban:
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
sumber
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.
Pembaruan: Saya tidak yakin apakah ini adalah hal yang diketahui, tetapi inilah yang dikatakan halaman dokumentasi apel:
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.
sumber
let objCreateEventVC = CreateEventVC() objCreateEventVC.hidesBottomBarWhenPushed = true self.navigationController?.pushViewController(objCreateEventVC, animated: false)
sumber
setViewControllers
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.
sumber
Hide Bottom Bar on Push
memiliki animasi yang tidak menyenangkan, imo.Cepat 3.
self.tabBarController?.tabBar.isHidden = true
sumber
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 } }
sumber
Ini adalah cara terprogram untuk Swift 4.0, 4.1, 4.2, 5.0 dan yang lebih baru >:
tabBarController?.hidesBottomBarWhenPushed = true
atau
hidesBottomBarWhenPushed = true
sumber
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.
sumber