IOS स्विफ्ट ऐप में टैब बार छुपाएं


91

मैं अपने iOS स्विफ्ट ऐप में टैब बार को छिपाने का तरीका जानने की कोशिश कर रहा हूं। मैं किसी भी फैंसी एनिमेशन या किसी भी चीज़ की परवाह नहीं करता। बस कुछ मैं ViewDidLoad () फ़ंक्शन में रख सकता हूं।


वीसी को धक्का देने से पहले इसे सेट करें। vc.hidesBottomBarWhenPushed = trueकाम करना चाहिए। टैबबार को मैन्युअल रूप से न दिखाएँ और छिपाएँ।
अभिमुर्लीधरन

जवाबों:


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
उसके लिए अड़चनें जोड़ें।
धर्मेश खेनी

2
जोड़ने के लिए "बाधाएं" क्या हैं?
db0

यदि आपने बाधाओं का उपयोग किया है तो आप उसके लिए ऊंचाई की सीमा को बदल सकते हैं या आप टेबल व्यू के फ्रेम को बदल सकते हैं। @ db0
धर्मेश खेनी

5
लेकिन टैब बार अभी भी स्पर्श लेगा, अदृश्य टैब बार के किसी भी टैब के पास टैप करने का प्रयास करें। @ धर्मेश कीनी
शोभित सी

140

स्वीकृत उत्तर काम करता है, लेकिन अन्य दृश्य में संक्रमण का एक तड़का हुआ एनीमेशन है (टैब बार एनीमेशन)

यह भी जोड़ना चाहता था कि कल्पेश का समाधान मेरे लिए पूरी तरह से काम करता है, लेकिन मुझे पता चला कि हर व्यू कंट्रोलर के पास hidesBottomBarWhenPushed (चेक आउट स्टोरीबोर्ड) की एक विशेषता है। यदि आप टैब बार को छुपाना चाहते हैं, तो आपको उस पर एक टिक लगाना चाहिए। और यह बहुत अच्छा काम करेगा।

यहाँ छवि विवरण दर्ज करें

अद्यतन: मुझे यकीन नहीं है कि अगर यह एक ज्ञात बात है, लेकिन यहाँ क्या सेब प्रलेखन पृष्ठ कहते हैं:

नेविगेशन कंट्रोलर के एक बच्चे के रूप में जोड़ा गया एक व्यू कंट्रोलर स्क्रीन के नीचे एक वैकल्पिक टूलबार प्रदर्शित कर सकता है। सबसे ऊपरी दृश्य नियंत्रक पर इस संपत्ति का मूल्य निर्धारित करता है कि क्या टूलबार दिखाई देता है। यदि इस गुण का मान सत्य है, तो टूलबार छिपा हुआ है। यदि इस संपत्ति का मूल्य गलत है, तो बार दिखाई देता है।

मुझे लगता है कि इसका मतलब है कि आपको सबसे ऊपरी दृश्य नियंत्रक पर hidesBottomBarWhenPushed का मूल मान सेट करना होगा (नेविगेशन स्टैक पर पहला वाला।) एक बार जब आप यह निर्धारित कर लेते हैं कि आप सही हैं, तो आप दूसरे व्यू-कंट्रोलरों पर झूठे या सच में बदल सकते हैं। ढेर। लेकिन, अगर आपका सबसे ऊपरी दृश्य नियंत्रक का छुपाता है BottomBarWhenPushed मान गलत है, तो यह नेविगेशन स्टैक पर अन्य नियंत्रकों के लिए एक टैब बार नहीं दिखाएगा।


2
यही हमें करना चाहिए। अन्य उत्तरों की तुलना में बहुत बेहतर है यदि आप इसे देखना चाहते हैं जबकि आप ViewController प्रस्तुत करते हैं
गेब्रियल गोंकाल्वेस

यह स्विफ्ट 4 में काम क्यों नहीं कर रहा है ?? मैं पहले ही विकल्प पर टिक करता हूं, लेकिन यह तब भी दिखाई देता है जब मैं उस विशेष दृश्य नियंत्रक पर जाता हूं
केन

यह किसी भी व्यू कंट्रोलर के लिए टैब बार को भी छुपाता है जो इसके बाद स्टैक में जुड़ जाता है। क्या उन बाद के दृश्य नियंत्रकों के लिए इसे वापस लाने का कोई तरीका है?
जस्टिन वैलेली

@JustinVallely कृपया मुझे बताएं कि क्या जवाब में अपडेट काम करता है
अक्षां ठाकुर

1
धन्यवाद, स्वीकार किए गए उत्तर में मेरे लिए एक समस्या थी, जब मैं उस दृश्य पर वापस जाता हूं जो मैं से आ रहा था, तो इसके लिए टैब्बर भी गायब था!
अबेद नसेरी

79

पुश सेट कंट्रोलर से पहले

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

नियंत्रक के एक गुच्छा को जोड़ने पर काम नहीं करता हैsetViewControllers
केआर

27

TabBar की isHidden प्रॉपर्टी को सेट करने की आवश्यकता नहीं है।

बस, ViewController पर जाएं (StoryBoard में) -> इंस्पेक्टर इंस्पेक्टर -> 'व्यू कंट्रोलर' सेक्शन के तहत 'पुश बॉटम बॉटम बार पुश' चेकबॉक्स चुनें। यह एक आकर्षण की तरह काम करता है।

यदि आप 'हैडिड' तरीके से जाते हैं, तो आपको बहुत सी हैंडलिंग करने की आवश्यकता होती है, अर्थात जब आप वापस जाते हैं तो इसे फिर से प्रकट करने के लिए और टैबबर्ड को छिपाने के बाद नीचे की खाली जगह को हटाने के लिए भी।


3
यह वास्तविक उत्तर होना चाहिए। इसने मुझे किसी भी परेशानी के बिना अपने यूआई तत्वों के लिए बाधाओं को सेट करने की अनुमति दी।
कार्तिक कन्नन

2
Hide Bottom Bar on Pushएक अप्रिय एनीमेशन है, imo।
तियोडोर सियारू

जब आप इस पृष्ठ से वापस आते हैं, तब टैबर थोड़ा जमा देता है और वापस आता है। आपको क्या लगता है इसका कारण क्या है?
यूनुस टी।


3

आप इसे विस्तार में भी सेट कर सकते हैं (धर्मेश खेनी जवाब का उपयोग करें)

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

यह स्विफ्ट 4.0, 4.1, 4.2, 5.0 और बाद के लिए प्रोग्रामेटिक रूप से तरीका है :

tabBarController?.hidesBottomBarWhenPushed = true

या

hidesBottomBarWhenPushed = true

@NicoS। सच। जहां सवाल / जवाब में आप टूल बार के बारे में कुछ भी पढ़ते हैं?
जे डो

प्रलेखन से: एक बूलियन मान दर्शाता है कि क्या स्क्रीन नियंत्रक के नीचे टूलबार छिपा हुआ है जब दृश्य नियंत्रक को नेविगेशन नियंत्रक पर धकेल दिया जाता है।
निको एस।

1
सवाल TabBar नहीं टूलबार के बारे में है
Nico S.

@NicoS। इस स्थिति में ऐसा ही है ... योग्य। स्पष्ट रूप से आपने इसे आज़माने की जहमत नहीं उठाई।
जे। डो।

1
पहले वाला काम नहीं करता है, दूसरे को जब एक सेगमेंट करते हुए या व्यू कंट्रोलर को पुश करने से पहले जोड़ा जाना चाहिए।
गल शाहर

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

    }

}

जब स्क्रीन ओरिएंटेशन ने टैबबार की ऊंचाई को भी बदल दिया है, तो मैं अगले फ़ंक्शन का उपयोग ऊंचाई को आकार देने के लिए फुलस्क्रीन से बाहर निकलने के लिए करता हूं:

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

मुझे आशा है कि यह आपके लिए उपयोगी है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.