दिलचस्प पोस्ट
बाश खोल लिपि में इनपुट तर्क के अस्तित्व की जाँच करें सी # में उच्च प्रदर्शन टीसीपी सर्वर एक संदर्भित संदर्भ क्या है? एंड्रॉइड ऐप मेमोरी के मुद्दों से बाहर – सब कुछ करने की कोशिश की और फिर भी नुकसान पर सदस्य कलेक्शन के खुलासे के लिए केवलपढ़नेयोग्यकलेक्शन या पहला असंख्य? एक सूचक को एक पूर्णांक में परिवर्तित करना जावा प्रोग्राम कैसे लिख सकता है जो एक जार फ़ाइल को निकाल सकता है और निर्दिष्ट डेटा (स्थान) में अपना डेटा संग्रहीत कर सकता है? जावा में एक निर्माता का उद्देश्य? Bash में, मैं एक कमांड में फ़ंक्शन कुंजी कैसे बाँधूं? ग्रहण त्रुटि, हाल ही के अपडेट के बाद आर.जेवा फाइल गायब है कंसोल से एंड्रॉइड ऐप्लीकेशन रोकना स्क्रिप्ट को पासवर्ड के बिना अन्य उपयोगकर्ता के रूप में कैसे चलाया जाता है सेवा को विंडोज में डेस्कटॉप के साथ सहभागिता करने की अनुमति दें विंडोज में एक क्रॉन नौकरी की स्थापना पायथन: बनाओ eval safe

UILabel – टेक्स्ट फिट करने के लिए ऑटो-साइज लेबल?

क्या निहित पाठ को फिट करने के लिए यूआईएलबल बॉक्स / सीमा को स्वत: आकार बदलना संभव है? (मुझे कोई परवाह नहीं है कि यह प्रदर्शन से बड़ा होता है)

तो अगर कोई उपयोगकर्ता "हैलो" में प्रवेश करता है या "मेरा नाम सचमुच लंबा है तो मैं इसे इस बॉक्स में फिट करना चाहता हूं", इसे कभी भी कम नहीं किया जाता है और तदनुसार लेबल 'चौड़ा' होता है?

वेब के समाधान से एकत्रित समाधान "UILabel – टेक्स्ट फिट करने के लिए ऑटो-साइज लेबल?"

कृपया मेरे gist की जांच करें जहां मैंने बहुत ही कुछ के लिए UILabel लिए एक श्रेणी बनायी है, मेरी श्रेणी में एक UILabel खिंचाव देता है, यह सभी सामग्री दिखाने के लिए ऊंचाई है: https://gist.github.com/1005520

या इस पोस्ट की जांच करें: https://stackoverflow.com/a/7242981/662605

यह ऊँचाई फैलाएगा, लेकिन आप अन्य तरीके से काम करने के लिए इसे आसानी से बदल सकते हैं और इस तरह से कुछ के साथ चौड़ाई बढ़ा सकते हैं, जो मुझे विश्वास है कि आप क्या करना चाहते हैं:

 @implementation UILabel (dynamicSizeMeWidth) - (void)resizeToStretch{ float width = [self expectedWidth]; CGRect newFrame = [self frame]; newFrame.size.width = width; [self setFrame:newFrame]; } - (float)expectedWidth{ [self setNumberOfLines:1]; CGSize maximumLabelSize = CGSizeMake(CGRectGetWidth(self.bounds), CGFLOAT_MAX); CGSize expectedLabelSize = [[self text] sizeWithFont:[self font] constrainedToSize:maximumLabelSize lineBreakMode:[self lineBreakMode]]; return expectedLabelSize.width; } @end 

आप UIView क्लास से उपलब्ध sizeToFit विधि का अधिक आसानी से इस्तेमाल कर सकते हैं, लेकिन सुरक्षित होने के लिए लाइनों की संख्या 1 पर सेट कर सकते हैं।


आईओएस 6 अद्यतन

यदि आप ऑटोलायआउट का उपयोग कर रहे हैं, तो आपके पास समाधान में निर्मित है 0 की पंक्तियों की संख्या निर्धारित करके, आपके टेक्स्ट को फिट करने के लिए फ्रेमवर्क आपके लेबल को उचित रूप से बदल देगी (अधिक ऊंचाई जोड़कर)।

[label sizeToFit]; का उपयोग करना [label sizeToFit]; डेनियल श्रेणी से एक ही परिणाम प्राप्त करेंगे

यद्यपि मैं स्वत: का उपयोग करने की सलाह देता हूं और बाध्यताओं के आधार पर लेबल को अपने आकार में बदलने देता हूं।

अगर हम चाहते हैं कि UILabel को पाठ आकार के आधार पर सिकुड़ और विस्तार करना चाहिए तो ऑटोलेआउट के साथ स्टोरीबोर्ड सबसे अच्छा विकल्प है। नीचे यह हासिल करने के लिए कदम उठाए गए हैं

कदम

  1. UILabel को देखने के नियंत्रक को रखें और इसे जहाँ भी आप चाहते हैं वहां जगह दें। numberOfLines के numberOfLines संपत्ति के लिए भी 0 डाल दिया।

  2. इसे शीर्ष, अग्रणी और पीछे की स्थिति पिन बाधा दे।

यहां छवि विवरण दर्ज करें

  1. अब यह चेतावनी देगा, पीला तीर पर क्लिक करें।

यहां छवि विवरण दर्ज करें

  1. Update Frame पर क्लिक करें और Fix Misplacement पर क्लिक Fix Misplacement । अब यह यूआईएलबल सिकुड़ जाएगा यदि पाठ कम है और विस्तार अगर पाठ अधिक है

यह उतना जटिल नहीं है जितना अन्य जवाबों में से कुछ इसे बनाते हैं।

यहां छवि विवरण दर्ज करें

बायां और शीर्ष किनारों को पिन करें

लेबल के बाएं और ऊपर की तरफ पिन करने के लिए बाधाओं को जोड़ने के लिए बस ऑटो लेआउट का उपयोग करें।

यहां छवि विवरण दर्ज करें

उसके बाद यह स्वचालित रूप से आकार बदल जाएगा

टिप्पणियाँ

  • चौड़ाई और ऊंचाई के लिए बाधाओं को मत जोड़ें उनके पाठ सामग्री के आधार पर लेबल का एक आंतरिक आकार होता है
  • इस के साथ मदद के लिए इस उत्तर के लिए धन्यवाद
  • स्वत: लेआउट का उपयोग करते समय आकार सेट करने की आवश्यकता नहीं है। उदाहरण परियोजना के लिए मेरा पूरा कोड यहां है:

     import UIKit class ViewController: UIViewController { @IBOutlet weak var myLabel: UILabel! @IBAction func changeTextButtonTapped(sender: UIButton) { myLabel.text = "my name is really long i want it to fit in this box" } } 
  • यदि आप अपना लेबल लपेटें चाहते हैं तो आईबी में 0 की संख्या निर्धारित करें और myLabel.preferredMaxLayoutWidth = 150 // or whatever जोड़ें। myLabel.preferredMaxLayoutWidth = 150 // or whatever कोड में myLabel.preferredMaxLayoutWidth = 150 // or whatever हो (मैंने अपने बटन को लेबल के नीचे भी पिन किया है ताकि लेबल की ऊँचाई बढ़ाई जा सके।

यहां छवि विवरण दर्ज करें

  • यदि आप UITableViewCell भीतर लेबल को गतिशील रूप से आकार देने के लिए देख रहे हैं तो यह उत्तर देखें।

यहां छवि विवरण दर्ज करें

[label sizeToFit]; उपयोग करें [label sizeToFit]; यूआईएलबल में पाठ को समायोजित करने के लिए

मैंने ऊपर दिए गए डैनियल के उत्तर के आधार पर कुछ तरीके तैयार किए।

 -(CGFloat)heightForLabel:(UILabel *)label withText:(NSString *)text { CGSize maximumLabelSize = CGSizeMake(290, FLT_MAX); CGSize expectedLabelSize = [text sizeWithFont:label.font constrainedToSize:maximumLabelSize lineBreakMode:label.lineBreakMode]; return expectedLabelSize.height; } -(void)resizeHeightToFitForLabel:(UILabel *)label { CGRect newFrame = label.frame; newFrame.size.height = [self heightForLabel:label withText:label.text]; label.frame = newFrame; } -(void)resizeHeightToFitForLabel:(UILabel *)label withText:(NSString *)text { label.text = text; [self resizeHeightToFitForLabel:label]; } 
 @implementation UILabel (UILabel_Auto) - (void)adjustHeight { if (self.text == nil) { self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.bounds.size.width, 0); return; } CGSize aSize = self.bounds.size; CGSize tmpSize = CGRectInfinite.size; tmpSize.width = aSize.width; tmpSize = [self.text sizeWithFont:self.font constrainedToSize:tmpSize]; self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, aSize.width, tmpSize.height); } @end 

यह श्रेणी विधि है आपको यूआईएलबल की ऊँचाई को समायोजित करने के लिए इस विधि को कॉल करने से पहले, पहले पाठ सेट करना होगा।

आप पाठ के अनुसार अपने लेबल का आकार और अन्य संबंधित नियंत्रण दो तरीकों का उपयोग कर सकते हैं-

  1. आईओएस 7.0 और इसके बाद के संस्करण के लिए

     CGSize labelTextSize = [labelText boundingRectWithSize:CGSizeMake(labelsWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{ NSFontAttributeName : labelFont } context:nil].size; 

आईओएस 7.0 से पहले यह लेबल आकार की गणना करने के लिए इस्तेमाल किया जा सकता है

 CGSize labelTextSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping]; 

// लेबल पर आधारित अन्य नियंत्रण reframeHighlightTextHeight

 CGFloat labelTextHeight = labelTextSize.height; 
  1. यदि आप लेबल के टेक्स्ट के आकार की गणना नहीं करना चाहते हैं, तो आप उपयोग कर सकते हैं-

     [label setNumberOfLines:0]; // for multiline label [label setText:@"label text to set"]; [label sizeToFit];// call this to fit size of the label according to text 

// इसके बाद आप अन्य संबंधित नियंत्रणों का उपयोग करने के लिए लेबल फ्रेम प्राप्त कर सकते हैं

  1. स्टोरीबोर्ड में लापता बाधाएं जोड़ें
  2. स्टोरीबोर्ड में यूआईएलबल का चयन करें और "लाइन" को 0 पर सेट करें
  3. आईडी: लेबल के साथ यूआईएलएबल टू कंट्रोलर एच। आउट करें
  4. नियंत्रक.एम और जोड़ें [label sizeToFit]; दृश्य में डीडलोड

ऑटो लेआउट के साथ मेरे पास बहुत बड़ी समस्या थी हमारे पास दो कोशिकाओं के अंदर तालिका कक्ष हैं दूसरा कंटेनर का आकार बदलकर आइटम विवरण (0 – 1000 वर्ण) के आधार पर बदल दिया गया है, और उनके आधार पर पंक्ति का आकार बदलना चाहिए।

लापता घटक विवरण के लिए कम बाधा था।

मैंने गतिशील तत्व के निचले बाधा को = 0 से > = 0 से बदल दिया है

हर समय फिट बैठता है! 🙂

  name.text = @"Hi this the text I want to fit to" UIFont * font = 14.0f; CGSize size = [name.text sizeWithAttributes:@{NSFontAttributeName: font}]; nameOfAssessment.frame = CGRectMake(400, 0, size.width, 44); nameOfAssessment.font = [UIFont systemFontOfSize:font]; 

आप एक रेखा के आउटपुट को दिखा सकते हैं, फिर प्रॉपर्टी लाइन = 0 सेट कर सकते हैं और एक से अधिक लाइन आउटपुट दिखा सकते हैं, फिर प्रॉपर्टी लाइन = 1 और अधिक सेट कर सकते हैं

 [self.yourLableName sizeToFit]; 

यह दृष्टिकोण भी है:

 [self.myLabel changeTextWithAutoHeight:self.myStringToAssignToLabel width:180.0f];