2016-11-22 10 views
13

मुझे पूरा यकीन है कि यह डुप्लिकेट नहीं है क्योंकि मैंने अन्य उत्तरों को देखा और वे सभी पुराने हैं और सटीक उत्तर प्रदान नहीं करते हैं।मैं नेविगेशन बार स्विफ्ट की ऊंचाई कैसे बदल सकता हूं 3

मेरे पास नेविगेशन नियंत्रक और कई दृश्य नियंत्रक हैं। मैं नेविगेशन बार को थोड़ा लंबा बनाना चाहता हूं ताकि यह टेक्स्ट आकार को फिट कर सके जो मुझे चाहिए। मैं उसे कैसे कर सकता हूँ ?

मैं इस कोशिश की:। UINavigationBar.appearance() फ्रेम = CGRect (एक्स: 0.0, वाई: 0.0, चौड़ाई: 320.0, ऊंचाई: 210.0), लेकिन कुछ नहीं होता ...

इसके अलावा, मैं wasn ' एक्सकोड लेआउट बटन का उपयोग कर एनए बार में किसी भी बाधा को जोड़ने में सक्षम नहीं है।

आशा है कि कोई इस मुद्दे को ठीक करने में मेरी सहायता कर सकता है। अग्रिम में धन्यवाद! ,

self.navigationController?.navigationBar.addSubview(yourNavBarView) 
विकल्प में

:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    let height: CGFloat = 50 //whatever height you want to add to the existing height 
    let bounds = self.navigationController!.navigationBar.bounds 
    self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: bounds.height + height) 

} 
+0

http://stackoverflow.com/questions/40316352/increase-navigationbar-height/40320225#40320225 – Joe

उत्तर

21

यहाँ एक तरह से यह करने के लिए है यदि आप कोड से UIView बनाना चाहते हैं,

let viewNavBar = UIView(frame: CGRect(
    origin: CGPoint(x: 0, y:0), 
    size: CGSize(width: self.view.frame.size.width, height: 100))) 

और फिर एनएवी बार में जोड़ना।

+0

आपके उत्तर के लिए महान धन्यवाद, ठीक काम किया। मेरे आश्चर्य के लिए मैंने एक वीसी में कोड जोड़ा और यह पूरे ऐप के लिए काम किया ... मैंने आपके कोड को थोड़ा सा बदलने की कोशिश की और इसे ऐप प्रतिनिधि में दर्ज किया लेकिन दुर्भाग्य से यह काम नहीं किया। लेकिन मुझे लगता है कि यह ठीक है। – KirillC

+2

@ किरीलसी आप UINavigationController को उपclass कर सकते हैं और वहां फ्रैंकी का कोड जोड़ सकते हैं। –

+0

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

-1

आप (अपनी ऊंचाई के साथ) xib से अपने नेविगेशन पट्टी आकर्षित कर सकते हैं और उसके बाद:

enter image description here

+0

आपको इस तरह 'init' कहने की आवश्यकता नहीं है। - यहां एक बड़ी खामियां यह है कि आपने एक वेनिला यूविव बनाया है, न कि यूआईएनविगेशनबार जो ओपी चाहता है। – matt

7

आप इस

class TTNavigationBar: UINavigationBar { 

    override func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.main.bounds.width, height: 55) 
    } 

} 

की तरह एक वर्ग UINavigationBar के आधार पर बनाते हैं और अपने navigationController में जोड़ सकते हैं।

+0

क्या आपको कोई विचार है कि इस मामले को मेरे मामले में क्यों नहीं बुलाया जाता है? मैं मूल रूप से इस कोड को अपने कस्टम UINavigationBar क्लास में कॉपी-पेस्ट करता हूं और इसे अपने नेविगेशन बार पर स्टोरीबोर्ड में सेट करता हूं। – andrejbroncek

+0

@andrejbroncek क्या आप सुनिश्चित हैं कि आपका कस्टम UINavigationBar इसे निष्पादित कर रहा है? - एक आम समस्या यह है कि कभी-कभी आप कई UINavigationController के साथ समाप्त होते हैं और शायद आपका कस्टम UINavigationBar कभी निष्पादित नहीं होता है या यह प्रदर्शित नहीं होता है –

5

आप कक्षा में इस कोड है कि UINavigationController

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    let height = CGFloat(72) 
    navigationBar.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: height) 
} 
1

अपने एप्लिकेशन में नेविगेशन बार सभी एक ही समायोजित ऊंचाई अगर यह बेहतर हो सकता है फैली लिख सकते हैं।

extension UINavigationBar { 
    open override func sizeThatFits(_ size: CGSize) -> CGSize { 
     return CGSize(width: UIScreen.screenBounds.width, height: 51) 
    } 
} 
+0

@Hemang बस अपनी प्रोजेक्ट में कोड जोड़ें। – HMHero

संबंधित मुद्दे