2014-09-01 5 views
6

मैं कुछ यादृच्छिक पाठ को UILabel में प्रदर्शित करने की कोशिश कर रहा हूं और निश्चित रूप से मेरे पास इसकी चौड़ाई के अलावा कुछ भी नहीं है। क्या मेरे UILabel की ऊंचाई और/या लाइन में मौजूद पाठ के आधार पर सेट करने का कोई तरीका है?निहित पाठ के आधार पर यूलाबेल की लाइनों की संख्या सेट करें - उद्देश्य सी और/या स्विफ्ट

धन्यवाद;)

+0

आप लाइनों की संख्या के लिए 0 का उपयोग क्यों नहीं करते? – Larme

+0

शायद यह [ट्यूटोरियल] (http://www.raywenderlich.com/73602/dynamic-table-view-cell-height-auto-layout) आपकी मदद कर सकता है - यह गतिशील ऊंचाई वाले तालिका कक्षों के बारे में है, लेकिन मुझे लगता है कि आप कर सकते हैं जो भी आप कर रहे हैं उस अवधारणा को स्थानांतरित करें। यह उपयोगी है अगर आप ऑटो लेआउट – Antonio

+0

से निपट रहे हैं तो यह आपके लिए उपयोगी हो सकता है: - http://stackoverflow.com/questions/9181368/ios- गतिशील- आकार- लेबल –

उत्तर

6
myUILabel.numberOfLines = 0; 
myUILabel.text = @"Pass random text here"; 
[myUILabel sizeToFit]; 
+1

जानकारी के लिए धन्यवाद। यह वास्तव में आसान है कि मैंने वोट क्यों दिया है। कृपया प्रश्न के लिए अधिक वर्णनात्मक और ठोस उत्तर लिखें जो ऊंचा है। myUILabel.frame.size.height – Goppinath

+1

और आपको यह उल्लेख करना होगा कि [myUILabel sizeToFit]; आखिरी होना चाहिए। – Goppinath

+0

यह स्वीकार्य उत्तर होना चाहिए! धन्यवाद दोस्त! –

4

या (यदि आप एक विशिष्ट चौड़ाई और फ़ॉन्ट आकार के लिए लेबल की ऊंचाई की जरूरत है, तो आप इसे इस के साथ गणना कर सकते हैं):

func getStringHeight(mytext: String, fontSize: CGFloat, width: CGFloat)->CGFloat { 

    let font = UIFont.systemFontOfSize(fontSize) 
    let size = CGSizeMake(width,CGFloat.max) 
    let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.lineBreakMode = .ByWordWrapping; 
    let attributes = [NSFontAttributeName:font, 
     NSParagraphStyleAttributeName:paragraphStyle.copy()] 

    let text = mytext as NSString 
    let rect = text.boundingRectWithSize(size, options:.UsesLineFragmentOrigin, attributes: attributes, context:nil) 
    return rect.size.height 
} 

आप इस की जरूरत है स्विफ्ट के लिए या उद्देश्य सी के लिए?

1

आप hight गणना करने के लिए NSString UIKIT Addition विधि

- (CGSize)sizeWithFont:(UIFont *)font 
    constrainedToSize:(CGSize)size 
     lineBreakMode:(NSLineBreakMode)lineBreakMode 

उपयोग कर सकते हैं। कुछ इस तरह।

CGSize yourLabelSize = [@"Your very long text" sizeWithFont:yourFont constrainedToSize:CGSizeMake(desiredMaximumWidth, 2000) lineBreakMode:NSLineBreakByWordWrapping]; 

constrainedToSize पैरामीटर को समझना वाकई महत्वपूर्ण है। आपको desired maximum चौड़ाई और maximum possible height के साथ पास करना होगा। अपने लेबल के साथ उसी UIFont का उपयोग करें।

[yourLabel setNumberOfLines:0]; 

स्थापित करने के लिए न भूलें लेकिन पद्धति पहले से ही iOS 7 में हटा दिया गया है इसलिए आप उपयोग करना

- (CGRect)boundingRectWithSize:(CGSize)size 
         options:(NSStringDrawingOptions)options 
        attributes:(NSDictionary *)attributes 
         context:(NSStringDrawingContext *)context 

yourLabelSize.height आप ऊंचाई

आशा है कि यह तुम्हारी मदद करेगा दे देंगे है ...

1

स्विफ्ट 4.0

func getStringHeight(mytext: String, fontSize: CGFloat, width: CGFloat)->CGFloat { 

    let font = UIFont.systemFont(ofSize: fontSize) 
    let size = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude) 
    let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.lineBreakMode = .byWordWrapping; 
    let attributes = [NSAttributedStringKey.font:font, 
         NSAttributedStringKey.paragraphStyle:paragraphStyle.copy()] 

    let text = mytext as NSString 
    let rect = text.boundingRect(with: size, 
           options:.usesLineFragmentOrigin, 
           attributes: attributes, 
           context:nil) 
    return rect.size.height 
} 
संबंधित मुद्दे

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