2015-07-05 7 views
10

मैं UILabel जो गतिशील रूप से उत्पन्न कर रहे हैं पाश के लिए उपयोग कर लिया है, प्रत्येक प्रकार diff पाठ लेबल में निर्दिष्ट करते हैं, मैं पाठतेजी से UILabel को गतिशील रूप से गतिशील ऊंचाई कैसे देना है?

के आधार पर UILabel आकार गतिशील रूप से देना चाहता हूँ वहाँ किसी भी आसान समाधान में क्या करना है कि तेज में है है?

+0

क्या आप ऑटोलाउट का उपयोग कर रहे हैं? – Bannings

+0

हां, मैंने इसे स्ट्रॉरीबार्ड में उपयोग किया है, लेकिन इसे प्रोग्रामेटिक रूप से अभी तक उपयोग नहीं किया है, – sss

उत्तर

5
let label:UILabel = UILabel(frame: CGRectMake(x, y, width, height)) 
label.numberOfLines = 4 
label.lineBreakMode = NSLineBreakMode.ByWordWrapping 
let font = UIFont(name: "Helvetica", size: 20.0) 
label.font = font 
label.text = "Whatever you want the text enter here" 
label.sizeToFit() 

यदि आप टेक्स्ट की सामग्री के अनुसार संख्याऑफलाइन सेट करना चाहते हैं, तो अपनी अधिकतम लाइनें दें। यह बहुत महत्वपूर्ण है।

+0

मुझे "हेघ" में क्या जाना चाहिए? – sss

+1

आकार के लिए आप किसी भी मान को "ऊंचाई" से गुजर सकते हैं क्योंकि फ़ोटफिट() फ़ंक्शन फिर से सामग्री फिट करने के लिए ऊंचाई समायोजित करेगा। –

1
let label = UILabel() 
label.backgroundColor = UIColor.greenColor() 
label.text = "Hello,world.\n Just a test." 
let font = UIFont.systemFontOfSize(17.0) 
label.font = font 
label.numberOfLines = 0; 
let text = label.text! as NSString 
let size = text.sizeWithAttributes([NSFontAttributeName:font]) 
label.frame = CGRectMake(0, 0, size.width, size.height) 

आप कोड में ऑटो लेआउट का उपयोग कर सकते हैं। See Auto Layout Guide

3

एक लेबल ऊंचाई के आधार पर यह पाठ, फ़ॉन्ट है मिलता है, और चौड़ाई आप इसे करने के आवंटित:

func rectForText(text: String, font: UIFont, maxSize: CGSize) -> CGSize { 
     let attrString = NSAttributedString.init(string: text, attributes: [NSFontAttributeName:font]) 
     let rect = attrString.boundingRectWithSize(maxSize, options: NSStringDrawingOptions.UsesLineFragmentOrigin, context: nil) 
     let size = CGSizeMake(rect.size.width, rect.size.height) 
     return size 
    } 

let labelSize = rectForText("your text here", font: UIFont.systemFontOfSize(your font), maxSize: CGSizeMake(your label width,999)) 
let labelHeight = labelSize.height //here it is! 
+0

यह मेरे लिए बहुत अच्छा काम किया! मैंने स्विफ्ट 3 – Simon

+0

के लिए अभी अपडेट किया गया एक ही कोड इस्तेमाल किया है क्या मुझे इस ब्रो @ सिमॉन के लिए तेज़ 3 कोड मिल सकता है? –

+0

@ माई फुयू मैंने इसे अभी अपडेट के साथ संपादित किया है, अगर आपको समीक्षा के माध्यम से यहां जाना चाहिए, तो आपको अभी भी इसकी आवश्यकता है! –

3
myLabel.text = "Your Label Text Here" 

    myLabel.textAlignment = .Natural 

    myLabel.numberOfLines = 0 

    myLabel.sizeToFit() 

    myLabel.frame = CGRectMake(myLabel.frame.origin.x, myLabel.frame.origin.y, 280, myLabel.frame.height) 
1
let label:UILabel = UILabel() 

             label.textColor=UIColor.black 
             label.font = UIFont(name: "Halvetica", size: 17) 
             label.numberOfLines = 1 

             label.text = item.name 
             label.sizeToFit() 

             label.frame = CGRect(x: 5, y: imageView.frame.height+10, width: 50, height:label.frame.height) 
+0

मुझे लगता है कि यह आपके लिए सहायक है – user8969659

0
NSString(string: "hello this is a string").boundingRect(
     with: CGSize(width: width, height: .greatestFiniteMagnitude), 
     options: .usesLineFragmentOrigin, 
     attributes: [.font: self], 
     context: nil).size 

उपयोग इस प्रक्रिया में स्ट्रिंग के लिए आकार निर्धारित पाने के लिए । CGSize(widhth,height) में अधिकतम ऊंचाई और अधिकतम चौड़ाई रखें और यह CGSize ऑब्जेक्ट को ऊंचाई और चौड़ाई वाले स्थान पर वापस कर देगा। इसे अपने परिदृश्य के अनुसार प्रयोग करें

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