2011-03-03 11 views
5

मुझे मल्टीलाइन उइलाबेल के साथ एक छोटी सी समस्या है, मेरा उइलाबेल पाठ अजीब तरह से मध्य से शुरू होता है और जब नई लाइनें आती हैं तो यह बढ़ जाती है ताकि अंतिम रेखा मध्य में हो हमेशा। मैं इसे एक सामान्य टेक्स्टव्यू की तरह व्यवहार करना चाहता हूं, शीर्ष से शुरू होने वाली रेखाएं और रेखाएं एक-दूसरे के नीचे जा रही हैं, पहली पंक्ति शीर्ष पर रहती है। क्षमा करें अगर मैंने इसे बुरी तरह समझाया, तो जरूरत पड़ने पर मैं विस्तृत करने की कोशिश कर सकता हूं! अग्रिम में धन्यवाद!शीर्ष से टेक्स्ट शुरू करने के लिए मल्टीलाइन यूलाबेल बनाना

उत्तर

11

आप एनएसएसटींग पर sizeWithFont:constrainedToSize:lineBreakMode: विधि का उपयोग कर सकते हैं ताकि पाठ के एक ब्लॉक की ऊंचाई और एक चौड़ाई वाली चौड़ाई की ऊंचाई का पता लगाया जा सके। फिर आप पाठ को शामिल करने के लिए पर्याप्त बड़े होने के लिए अपने लेबल के फ्रेम को अपडेट करेंगे।

CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:label.lineBreakMode]; 
label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height); 
+0

तुम मेरे धन्यवाद है! –

+1

आपको 'label.numberOfLines = 0' सेट करने की भी आवश्यकता हो सकती है –

0

के बाद से sizeWithFont विधि आईओएस 7.0 + में decprecated है, तो आप एक वैकल्पिक पद्धति boundingRectWithSize नामित उपयोग कर सकते हैं।

उदाहरण के लिए:

NSDictionary *attrsDictionary =[NSDictionary dictionaryWithObject:YourFont forKey:NSFontAttributeName]; 
NSAttributedString *attrString =[[NSAttributedString alloc] initWithString:yourString attributes:attrsDictionary]; 

textRect = [attrString boundingRectWithSize:yourSize options:NSStringDrawingUsesLineFragmentOrigin context:nil]; 
संबंधित मुद्दे