2015-12-15 11 views
5

मैं कई लाइनों को अनुमति देने के लिए अपने नेविगेशन बार में शीर्षक लेबल सेट करने का प्रयास कर रहा हूं। मेरे पास कस्टम नेविगेशन नियंत्रक कोड है जो मैं मल्टीलाइन कोड को रख रहा हूं। मुझे पता है कि कोड पहले से ही काम करता है, लेकिन मेरा बहुआयामी हिस्सा काम नहीं कर रहा है।मल्टीलाइन नेविगेशनबार शीर्षक

let titleLabel = UILabel() 
titleLabel.frame = CGRectMake(0, 0, self.navigationBar.frame.width, self.navigationBar.frame.height * 2) 
titleLabel.numberOfLines = 0 
titleLabel.lineBreakMode = .ByWordWrapping 

navigationItem.titleView = titleLabel 

लेकिन पाठ अभी भी अंत में बंद हो जाता है। मैंने इसे अलग-अलग दृश्य नियंत्रक में भी डालने का प्रयास किया है, उसी परिणाम के साथ navigationItem के सामने self.navigationController?. जोड़ना।

क्या मेरे कोड में कुछ ऐसा है जो शीर्षक लेबल को एकाधिक लाइनों का उपयोग करने से रोक देगा?

+0

आपका 'navigationBar.frame.width' शायद अभी तक स्क्रीन के अनुरूप बनाने में आकार नहीं दिया गया था। सही फ्रेम का पता लगाने के लिए आप 'viewDidLayoutSubviews' को ओवरराइड करना चाह सकते हैं। –

उत्तर

20

यहाँ कैसे आप एक बहु navigationBar शीर्षक

let label: UILabel = UILabel(frame: CGRectMake(0, 0, 400, 50)) 
label.backgroundColor = UIColor.clearColor() 
label.numberOfLines = 2 
label.font = UIFont.boldSystemFontOfSize(16.0) 
label.textAlignment = .Center 
label.textColor = UIColor.whiteColor() 
label.text = "This is a\nmultiline string for the navBar" 
self.navigationItem.titleView = label 

स्विफ्ट 3.0 बना सकते हैं की एक कोड उदाहरण है:

let label = UILabel(frame: CGRect(x:0, y:0, width:400, height:50)) 
label.backgroundColor = .clear 
label.numberOfLines = 2 
label.font = UIFont.boldSystemFont(ofSize: 16.0) 
label.textAlignment = .center 
label.textColor = .white 
label.text = "This is a\nmultiline string for the navBar" 
self.navigationItem.titleView = label 
+0

इसे कुछ पसंद करने के लिए कुछ tweaking की आवश्यकता होगी जैसे मैं इसे चाहता हूं, लेकिन इससे मदद मिली। –

+0

मैंने फ्रेम को स्पष्ट रूप से सेट किए बिना 'navigationItem.titleView' का उपयोग किया और यह ठीक काम कर रहा है। – gutte

0

उपयोग यह करने के लिए लेबल स्थिति आप यह चाहते बिल्कुल के रूप में मिलती है:

let labelWidth = navBar.bounds.width - 110 

    let label = UILabel(frame: CGRect(x:(navBar.bounds.width/2) - (labelWidth/2), y:0, width:labelWidth, height:navBar.bounds.height)) 
    label.backgroundColor = UIColor.clear 
    label.numberOfLines = 0 
    label.font = UIFont.boldSystemFont(ofSize: 13.0) 
    label.textAlignment = .center 
    label.textColor = UIColor.black 
    label.lineBreakMode = .byWordWrapping 

    label.text = loadedName 
    navBar.topItem?.title = nil 
    navBar.addSubview(label) 

शीर्ष लिन में 110 मूल्य ई वह अंतर है जिसे आप लेबल के दोनों तरफ चाहते हैं।

0

यह स्टोरीबोर्ड में करने योग्य है। बस एक UIView को नेविगेशन बार में खींचें, फिर उस पर UILabel को दस्तावेज़ रूपरेखा में खींचें, लाइनों को 2 पर सेट करें और केंद्र में संरेखण करें।

enter image description here

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