2012-06-08 15 views
6

मैं UILabel के शामिल sizeToFit विधि एक समस्या है:UILabel के आकार के अनुसार

UILabel *questionLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,320,320)]; 
questionLabel.lineBreakMode = UILineBreakModeWordWrap; 
questionLabel.backgroundColor=[UIColor clearColor]; 
questionLabel.textAlignment=UITextAlignmentLeft; 
questionLabel.textColor=[UIColor blackColor]; 
questionLabel.tag=1; 
questionLabel.font=[UIFont systemFontOfSize:13]; 
questionLabel.numberOfLines = 0; 
[questionLabel sizeToFit]; 
[myView addSubview:questionLabel]; 

मैं अपने डेटा प्रदर्शित करने के लिए इस कोड को लिखा था। लेकिन अगर मैं लिखता हूं: [questionLabel sizeToFit] मेरा डेटा ठीक से प्रदर्शित नहीं होता है। अगर मैं [questionLabel sizeToFit] हटा देता हूं तो यह प्रदर्शित होता है लेकिन यह केवल आधा डेटा दिखाता है।

धन्यवाद और विनम्र।

+0

आप 0 की संख्या को स्थिर रूप से क्यों सेट कर रहे हैं? इसके बजाय आप CGRectZero के साथ प्रारंभ करके चौड़ाई या ऊंचाई या दोनों फ़ॉन्ट आकार का उपयोग कर सकते हैं। उत्तर देने के लिए – Tarun

+0

धन्यवाद। क्या आप उपर्युक्त वाक्य को स्पष्ट रूप से – fayaz

+1

स्पष्ट कर सकते हैं, मुझे पता है कि मुझे देर हो चुकी है, लेकिन शायद यह मदद करता है: 'sizeToFit' कई लाइनों के साथ 'UILabel' के साथ काम नहीं करता है। आप इसके लिए 'UITextView' का उपयोग कर सकते हैं लेकिन आपको यह सुनिश्चित करना होगा कि टेक्स्ट व्यू का आकार आवश्यक से बड़ा है। इस तरह: दृश्य की ऊंचाई = 'MAXFLOAT' सेट करें और फिर 'sizeToFit' को कॉल करें। यदि आप इसे एक लेबल रखना चाहते हैं, तो आपको 'sizeWithFont: constrainedToSize: lineBreakMode:' तरीका का उपयोग करने की आवश्यकता है। उम्मीद है की यह मदद करेगा। चीयर्स! – George

उत्तर

-1

बस सुनिश्चित करें कि आप लेबल की लाइनों की संख्या बढ़ाएं।

questionLable.numberOfLines = 4; की

questionLable.numberOfLines = 0; मेकअप उपयोग करने के बजाय के रूप में यह छोटी से छोटी चौड़ाई 4 लाइनों के लिए संभव गणना करने के लिए प्रणाली के लिए बाध्य करेगा।

आप अगर यह मदद करता है XIB फ़ाइल बहुत माध्यम से इस लक्ष्य को हासिल कर सकते हैं ..

+0

समस्या यह है कि मैं डेटा देखने में सक्षम नहीं हूं। अगर मैं लिखता हूं [प्रश्नावली आकार टोफिट] – fayaz

16
NSString *yourString = @"write your label text here"; 
CGSize s = [yourString sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap]; 
questionLabel.frame = CGRectMake(0, 0, s.width, s.height); 

चेक।

+0

यह अब आईओएस 8 में काम नहीं करता है, क्योंकि इस विधि को – chandhooguy

+0

हटा दिया गया है UILineBreakModeWordWrap के बजाय NSLineBreakByWordWrapping का उपयोग करें जो बहिष्कृत है! :) – MasterRazer

+0

आकारविथफॉन्ट: अब बहिष्कृत है - इसलिए यह अब सही नहीं है – AppHandwerker

0

मैं समस्या से ऊपर googled डी और कुछ जानकारी में आया कि आकार ToFit एक बग प्रतीत होता है और यह पहले से ही सेब की सूचना दी गई है।

NSString * myText = [NSString stringWithString:@"some text"]; 

CGFloat constrainedSize = 265.0f; 

UIFont * myFont = [UIFont fontWithName:@"Arial" size:19]; 

CGSize textSize = [myText sizeWithFont: myFont 
         constrainedToSize:CGSizeMake(constrainedSize, CGFLOAT_MAX) 
          lineBreakMode:UILineBreakModeWordWrap]; 



CGRect labelFrame = CGRectMake (0, 0, textSize.width, textSize.height); 

UILabel *label = [[UILabel alloc] initWithFrame:labelFrame]; 

[label setFont:myFont]; 

[label setText:myText]; 
+0

प्रयास रखने के लिए धन्यवाद लेकिन फिर भी वही समस्या – fayaz

2

मुझे लगता है कि यह एक लेबल के आकार की गणना करने के taus-iDeveloper जवाब उपयोग करने के लिए सबसे अच्छा है: तो एक समाधान के रूप यू इस कोड का उपयोग कर सकते हैं।
मैं सिर्फ यह कहना चाहता हूं कि आपका कोड काम नहीं कर रहा है क्योंकि आपने अपने UILabel को टेक्स्ट सेट नहीं किया है, इसलिए आकार ToFit CGSizeZero देता है (इसलिए यह स्क्रीन पर दिखाई नहीं देता है)। SizeToFit का उपयोग करने से पहले आपको टेक्स्ट सेट करना होगा।

2

मैंने पाया कि अगर autolayout तो आकार पर है

+0

आ रही है, यह बहुत अच्छा है – Vishal

0

काम नहीं फिट करने के लिए मैंने पाया है कि जब एक UILabel साथ sizeToFit का उपयोग कर, InterfaceBuilder में आप से करने के लिए 'फिक्स्ड फ़ॉन्ट का आकार' 'AutoShrink संपत्ति को बदलने की जरूरत न्यूनतम फ़ॉन्ट आकार '। मैं आमतौर पर यह सुनिश्चित करने के लिए 0.5 का मान निर्धारित करता हूं कि यह ठीक से काम कर रहा है।

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