2009-09-06 4 views
6

एक यूलाबेल की कल्पना करो, जो 200 पिक्सल चौड़ी और 50 पिक्सेल ऊंची है। लेबल में टेक्स्ट है, और लेबल टेक्स्ट को छोटा बनाता है ताकि यह लेबल में फिट हो। लेकिन अब, आप उस यूआईएफओटी का आकार कैसे प्राप्त करेंगे, यह लेबल में कैसा दिखाई देता है? आइए कल्पना करें कि फ़ॉन्ट का आकार विशाल 100 के साथ दिया गया था, और लेबल इसे 15 तक घटा देता है। और फिर, आप कुछ अन्य लेबल को छोटे टेक्स्ट के साथ बनाना चाहते हैं, जिसमें एक ही फ़ॉन्ट आकार है। क्या लेबल द्वारा निचोड़ने के बाद यूआईएफओटी के फ़ॉन्ट आकार को प्राप्त करने का कोई तरीका है?यूआईएफओटी के आकार की गणना कैसे करें जब लेबल में पाठ चौड़ाई फिट करने के लिए बाध्य हो जाता है?

उत्तर

15

आप UILabel और breakMode, आदि के आकार पार कर लेते हैं:

CGSize size = [label.text sizeWithFont:label.font minFontSize:10 actualFontSize:&actualFontSize forWidth:200 lineBreakMode:UILineBreakModeTailTruncation]; 

actualFontSize होना चाहिए कि आप क्या देख रहे हैं।

अद्यतन:

ऊपर मान्य नहीं है। अब उपयोग करने के लिए विधि है:

- (CGRect)textRectForBounds:(CGRect)bounds 
    limitedToNumberOfLines:(NSInteger)numberOfLines 

यहाँ एक उदाहरण

CGSize size = [label textRectForBounds:label.bounds 
    limitedToNumberOfLines:1].size; 
+0

तो actualFontSize एक CGSize जो मुझे लगता है कि विधि के संदर्भ द्वारा पारित किया जाएगा है? –

+0

हां। सी और ओब्जे सी में, एक फ़ंक्शन प्रतिबंधित है कि यह मूल्यों को कैसे वापस कर सकता है। फ़ंक्शन पर जाने वाले तर्कों का मूल्यांकन किया जाता है और फ़ंक्शन कहने से पहले उनके मूल्य को स्टैक पर धक्का दिया जाता है। फ़ंक्शन केवल उन मानों को प्राप्त करता है और उनमें वापसी मूल्य नहीं रिले कर सकता है। जब तक धक्का नहीं दिया जाता है तब तक एक सूचक होता है, जिस स्थिति में फ़ंक्शन पॉइंटर का उपयोग अपने पते पर लिखने और इसे संशोधित करने के लिए कर सकता है। मैं oversimplifying हूँ - यहां वास्तविकFontSize समारोह (विधि) के लौटा मूल्यों में से एक है। – mahboudz

+0

यह आईओएस 7 में बहिष्कृत है। क्या कोई आईओएस 8 प्रतिस्थापन है? –

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

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