IOS swift uygulamasında sekme çubuğunu gizle


91

İOS hızlı uygulamamdaki sekme çubuğunu nasıl gizleyeceğimi anlamaya çalışıyorum. Süslü animasyonlar falan umurumda değil. ViewDidLoad () işlevine koyabileceğim bir şey.


VC'yi itmeden önce bunu ayarlayın. vc.hidesBottomBarWhenPushed = trueişi yapmalı. Sekme çubuğunu manuel olarak GÖSTERMEYİN ve SAKLAMAYIN.
abhimuralidharan

Yanıtlar:


214

Bunu basitçe ViewDidLoad()yönteminizde kullanabilirsiniz.

self.tabBarController?.tabBar.hidden = true

Swift 3.0, 4.0, 5.0 için :

self.tabBarController?.tabBar.isHidden = true

Veya sekme çubuğunun z konumunu şu şekilde değiştirebilirsiniz:

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

ve tekrar göstermek isterseniz:

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

14
Dharmesh, cevap için teşekkürler. Bu, sekme çubuğunu başarılı bir şekilde gizler, ancak tablo görünümü ekranı doldurmaz. Sekme çubuğunun olması gereken yerde sadece siyah. Sanırım ekrana sığdırmak için başka bir adım var?
Robert

3
Bunun için kısıtlamalar ekleyin.
Dharmesh Kheni

2
Eklenecek "kısıtlamalar" nelerdir?
db0

Kısıtlamalar kullandıysanız, bunun için yükseklik sınırlamasını değiştirebilir veya tableView çerçevesini değiştirebilirsiniz. @ db0
Dharmesh Kheni

5
Ancak sekme çubuğu yine de dokunulabilir, görünmez sekme çubuğunun herhangi bir sekmesinin yanına dokunmayı deneyin. @DharmeshKheni
Shobhit C

141

Kabul edilen cevap işe yarıyor, ancak diğer görünüme geçişte dalgalı bir animasyon var (Sekme Çubuğu animasyonu)

Ayrıca Kalpesh'in çözümü benim için mükemmel çalışmasına rağmen eklemek istedim, her görünüm denetleyicisinin hideBottomBarWhenPushed için bir özniteliğe sahip olduğunu öğrendim (film şeridine bakın.) Sekme çubuğunu gizlemek istiyorsanız, buna bir işaret koymalısınız. Ve harika çalışırdı.

görüntü açıklamasını buraya girin

Güncelleme: Bunun bilinen bir şey olup olmadığından emin değilim, ancak elma belgeleri sayfası şöyle diyor:

Gezinme denetleyicisinin alt öğesi olarak eklenen bir görünüm denetleyicisi, ekranın altında isteğe bağlı bir araç çubuğu görüntüleyebilir. Bu özelliğin en üstteki görünüm denetleyicisindeki değeri, araç çubuğunun görünür olup olmadığını belirler. Bu özelliğin değeri true ise, araç çubuğu gizlidir. Bu özelliğin değeri yanlışsa, çubuk görünür.

Sanırım bu, hidesBottomBarWhenPushed'ın temel değerini en üstteki görünüm denetleyicisinde (gezinme yığınındaki ilk) ayarlamanız gerektiği anlamına geliyor. Bunu true olarak ayarladıktan sonra, diğer görünüm denetleyicileri için false veya true olarak değiştirebilirsiniz. yığını. Ancak, en üstteki görünüm denetleyicinizin hidesBottomBarWhenPushed değeri false ise, gezinme yığınındaki diğer denetleyiciler için bir sekme çubuğu göstermez.


2
yapmamız gereken bu. ViewController'ı sunarken gizlemek istiyorsanız diğer yanıtlardan çok daha iyi
Gabriel Goncalves

Swift 4'te bu neden çalışmıyor ?? Seçeneği zaten işaretledim, ancak söz konusu görüntü denetleyicisine gittiğimde hala görünüyor
ken

Bu, bundan sonra yığına eklenen tüm görünüm denetleyicileri için sekme çubuğunu da gizler. Sonraki görüntü denetleyicileri için geri getirmenin bir yolu var mı?
Justin Vallely

@JustinVallely Güncelleme cevapta işe yararsa lütfen bana bildirin
Akshansh Thakur

1
Teşekkürler, kabul edilen cevabın benim için bir problemi vardı, geldiğim manzaraya geri döndüğümde, Tabbar da bunun için hoşnutsuzdu!
Abed Naseri

79

Controller.hidesBottomBarWhenPushed = true setini itmeden önce

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

Bir grup denetleyici eklerken çalışmıyorsetViewControllers
KR

27

TabBar'ın isHidden özelliğini ayarlamaya gerek yoktur.

Basitçe, ViewController'a gidin (StoryBoard'da) -> Öznitelik denetçisi -> 'Denetleyiciyi Görüntüle' bölümü altında, 'Basıldığında Alt Çubuğu Gizle' onay kutusunu seçin. Bu bir cazibe gibi çalışıyor.

'İsHidden' yoluna giderseniz, çok fazla işlem yapmanız gerekir, yani geri döndüğünüzde tekrar görünmesini sağlamak ve ayrıca tabBar'ı gizledikten sonra alttaki boş alanı kaldırmak için.


3
Bu gerçek cevap olmalı. Bu, kullanıcı arayüzü öğelerimin kısıtlamalarını herhangi bir güçlük çekmeden ayarlamamı sağladı.
Karthik Kannan

2
Hide Bottom Bar on Pushhoş olmayan bir animasyonu var, imo.
Teodor Ciuraru

Bu sayfadan geri döndüğünüzde Tabbar biraz donuyor ve geri geliyor. Sence sebebi nedir?
Yunus T.


3

Ayrıca uzantı olarak da ayarlayabilirsiniz (Dharmesh Kheni cevabını kullanın)

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 ve sonrası için programlı yöntem budur >:

tabBarController?.hidesBottomBarWhenPushed = true

veya

hidesBottomBarWhenPushed = true

@NicoS. Doğru. Bir araç çubuğu hakkında soru / cevabın neresinde bir şey okursunuz?
J. Doe

Belgelerden: Görünüm denetleyicisi bir gezinme denetleyicisine basıldığında ekranın altındaki araç çubuğunun gizlenip gizlenmediğini gösteren bir Boolean değeri.
Nico S.

1
Soru, Araç Çubuğu değil TabBar ile ilgili
Nico S.

@NicoS. bu durumda da aynı ... lol. Açıkçası, denemeye bile zahmet etmedin.
J. Doe

1
ilki çalışmazsa, ikincisi bir segment gerçekleştirilirken veya görünüm denetleyicisine basmadan önce eklenmelidir.
Gal Shahar

1

NavigationBar'ı ve tabBar'ı gizlemek için sonraki işlevi kullanıyorum:

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

    }

}

Ekran yönü tabBar'ın yüksekliğini de değiştirdiğinde, yüksekliği yeniden boyutlandırmak için tam ekrandan çıkmak için sonraki işlevi kullanıyorum:

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

Umarım sizin için yararlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.