यह एक अलग दृष्टिकोण है। टेक्स्ट का न्यूनतम आकार पता करें ताकि वह एक से अधिक पंक्ति तक लपेट न सके। यदि यह एक पंक्ति से ऊपर लपेटता है, तो आप ऊंचाई का उपयोग कर पता लगा सकते हैं।
CGSize maximumSize = CGSizeMake(300, 9999);
NSString *myString = @"This is a long string which wraps";
UIFont *myFont = [UIFont fontWithName:@"Helvetica" size:14];
CGSize myStringSize = [myString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
300 मार्जिन के लिए एक छोटे से अंतरिक्ष के साथ स्क्रीन की चौड़ाई है:
आप इस कोड का उपयोग कर सकते हैं। यदि आप आईबी का उपयोग नहीं कर रहे हैं तो आपको फ़ॉन्ट और आकार के लिए अपने मूल्यों को प्रतिस्थापित करना चाहिए, और lineBreakMode
के लिए।
अब myStringSize
में height
होगा जिसमें आप जो कुछ जानते हैं उसकी ऊंचाई के खिलाफ जांच कर सकते हैं केवल एक पंक्ति उच्च (उसी फ़ॉन्ट और आकार का उपयोग करके)। यदि यह बड़ा है, तो आपको टेक्स्ट को काटना होगा। ध्यान दें कि आपको इसे फिर से जांचने से पहले स्ट्रिंग में ... जोड़ना चाहिए (जोड़ना ... इसे फिर से सीमा पर धक्का दे सकता है)।
टेक्स्ट को काटने के लिए इस कोड को लूप में रखें, फिर सही ऊंचाई के लिए फिर से जांचें।
स्रोत
2010-04-19 16:34:16
बहुत बहुत धन्यवाद! आपका उत्तर सही था, और आकार को फिर से जांचने से पहले "..." को जोड़ने की चाल बुद्धिमान थी। – camilo
आईओएस 7 के लिए आपको [यह जवाब] देखना चाहिए (http://stackoverflow.com/a/18951386/3965) –
आईओएस 7 के बाद इसे हटा दिया गया है, आपको बाउंडिंगआरक्टविथसाइज का उपयोग करना चाहिए: .. – 7heaven