नेविगेशन बार में छोटे शीर्षक स्विच के लिए बड़ा शीर्षक चिकनी iOS 13, चिपचिपा नहीं है


11

मेरे पास UINavigationControllerइसका डिफ़ॉल्ट मान है navigationBar.prefersLargeTitles = true

मैं स्विच कर रहा हूं कि falseजब मैं push एक नए दृश्य में इसे कॉल करता हूं ( DetailsViewController), तो इसे में बदलकर viewWillDisappear

override func viewWillDisappear(_ animated: Bool) {
   super.viewWillDisappear(animated)
   navigationController?.navigationBar.prefersLargeTitles = false
}

अब में DetailsViewControllerउपयोग कर रहा हूँ willMove(to parent:)

override func willMove(toParent parent: UIViewController?) {
        navigationController?.navigationBar.prefersLargeTitles = true
}

बड़े शीर्षक के लिए वापस संक्रमण करने के लिए।

IOS 13 कैसे iOS 12 के साथ कर रहा है, इसके साथ संलग्न स्नैपशॉट को ध्यान से देखें , iOS 12 को सही व्यवहार मानते हैं।

iOS 13 :

iOS 13

iOS 12 :

iOS 12


.prefersLargeTitlesनेविगेशन स्टैक पर डिटेल व्यू कंट्रोलर को पुश करने पर आपको बिल्कुल भी बदलने की जरूरत नहीं है , यह स्वचालित रूप से एक छोटे शीर्षक का उपयोग करेगा और जब तक मैं जानता हूं कि रूट व्यू कंट्रोलर पर वापस जाने के बाद वापस बड़े पर चला जाएगा।
हेनरिक-डीएमजी

@ henrik-dmg I'am को यकीन नहीं है कि अगर यह पहले भी ऐसा था, लेकिन अब सब कुछ बड़े शीर्षक पर नहीं जाता है अगर मैंने ऐसा किया है, तो मैंने कोशिश की है।
मोहम्मद एस

1
largeTitleDisplayModeसेवा । automaticऔर आपको वांछित संक्रमण प्राप्त करना चाहिए।
हैरी जे

@ हेरीज कहाँ?
मोहम्मद एस

अपने व्यूडलडैड या नेविगेशन कंट्रोलर के भीतरnavigationController?.navigationItem.largeTitleDisplayMode = .automatic
हैरी जे

जवाबों:


21

आप जो कर रहे हैं वह हमेशा गलत था। आपको नेविगेशन बार के prefersLargeTitlesलिए trueएक बार सेट करना चाहिए और इसे फिर कभी नहीं छूना चाहिए।

यह देखने का तरीका कि प्रत्येक दृश्य नियंत्रक बड़े शीर्षकों के बारे में क्या करता है जैसा कि यह प्रतीत होता है कि दृश्य नियंत्रक अपनी इच्छा navigationItem(अपने में viewDidLoad) को वांछित करने के लिए सेट करता है largeTitleDisplayMode। तो अगर पहला vc है .alwaysऔर दूसरा है तो .neverसब कुछ स्मूथ होगा।


इतना अच्छा जवाब! कभी नहीं पता था कि एक ही समय में बड़े और छोटे खिताब रखने का तरीका था!
केस्पर Cz

0

मेरे पास एक ही मुद्दा था और दूसरे ViewController के स्टोरीबोर्ड पर एक नेविगेशनइटेम रखना था। मेरे NavigationItem segue द्वारा स्वचालित रूप से बनाया जा रहा था और उसके prefersLargeTitleमें viewDidLoad()बनाने से पहले दृश्य दिखाई दिया खत्म नहीं किया गया था। स्टोरीबोर्ड में एक नैविगेशन इट जोड़ने से यह समस्या ठीक हो गई और मुझे prefersLargeTitleस्टोरीबोर्ड के गुण मेनू में सेट करने की अनुमति मिल गई ।


0

मेरे मामले में यह समस्या एक दृश्य नियंत्रक के लिए एक सेग के दौरान हो रही थी जो कि एक बच्चा है UITabBarControllerlargeTitleDisplayModeचाइल्ड व्यू कंट्रोलर पर सेट करना इस बग को ठीक करने के लिए पर्याप्त नहीं था।

मैं UITabBarController दृश्य करने के लिए एक नेविगेशन आइटम जोड़ने और निर्धारित करके समस्या हल हो जाती है largeTitleDisplayModeके रूप में .neverवहाँ।

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