2012-02-03 15 views
5

मुझे पता है कि इस तरह के बहुत सारे थ्रेड हैं, लेकिन मैंने उन सभी को पढ़ा है (जहां तक ​​मैं कह सकता हूं) और मैंने वही समस्या नहीं देखी है।फोर्स टेक्स्ट लंबवत UILabel में फिट करने के लिए?

मैं खड़ी एक लेबल में दिखाने के लिए पाठ के सभी प्राप्त करने के लिए कोशिश कर रहा हूँ।

मुझे स्पष्ट करने दें - फ़ॉन्ट्स हमेशा एक ही तरीके नहीं बनाई गई हैं, इसलिए, जबकि उनके कुल ऊंचाई (उदाहरण के लिए, 24pts) एक ही हो सकता है। हालांकि, Ascender और Descender व्यापक रूप से भिन्न होता है - एक फ़ॉन्ट आधार रेखा से अधिक हो सकता है, जबकि दूसरा अधिकतर नीचे है। इसलिए, एक ही पाठ, विभिन्न फोंट के साथ हमेशा एक ही दृश्य/लेबल में नहीं दिखाया जा सकता है।

उदाहरण के लिए, नीचे दिए गए स्क्रीनशॉट देखें।

पहला हेल्वैटिका-बोल्ड 300pts है। दूसरा ऐप्पल गोथिक 300pts है।

सूचना कैसे "जी" के नीचे Helvetica साथ कट जाता है (और कई अन्य फोंट भी - यह कोशिश, तो आप देखेंगे)।

Helvetica-Bold300

AppleGothic

तो मेरी मुद्दा यह है: मैं पूरे पाठ को देखने के लिए, फ़ॉन्ट की परवाह किए बिना सक्षम होने के लिए करना चाहते हैं। यदि "हेल्वैटिका" उदाहरण में पाठ लेबल के भीतर (और केंद्रित) स्थानांतरित किया जा सकता है, तो यह मेरी समस्या का समाधान करेगा। इसे आसान बनाने के लिए, मुझे केवल एक पंक्ति प्रदर्शित करने की आवश्यकता है।

दुर्भाग्य से, समाधान मैंने देखा है में से कोई भी descenders और फ़ॉन्ट का आरोहक शामिल और पता लगाना है कि कैसे एक रेक्ट भीतर पाठ आकर्षित करने के लिए और इसके कट नहीं है। ध्यान दें कि विभिन्न धागे में "वर्टिकल एलाइनमेंट" समाधान इस विशेष समस्या को ठीक नहीं करते हैं।

क्या किसी के पास इसके लिए कोई विचार या समाधान है?

उत्तर

2

सबसे आसान तरीका UILabel को उपclass करना है और NSString UIKit additions में प्राप्त एनएसएसटींग की - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode विधि का उपयोग करना है।

आप अपने सब्सक्रास में - (void)setFont ओवरराइड कर सकते हैं, परीक्षण करें कि फ़ॉन्ट का आकार व्यू के रेक्ट में काम करेगा या नहीं, और यदि यह बहुत बड़ा है, तो इसे फिट होने तक इसे छोटा बनाएं।

+0

धन्यवाद, लेकिन छवियों मैं पोस्ट किया है पहले से ही VerticalAlignment और 'sizetofit' का उपयोग कर उपवर्गीकरण का परिणाम है। फ़ॉन्ट का आकार मुद्दा नहीं है - जैसा कि आप देख सकते हैं, टेक्स्ट के लिए बहुत सारे कमरे हैं - यह ठीक से गठबंधन नहीं है। – wayneh

+0

ठीक है, लेकिन आकार WithFont विधि को देखें जो आपको स्ट्रिंग की ऊंचाई देगा, और यदि आप उसे जानते हैं, तो आप इसे स्वयं केंद्रित कर सकते हैं और फिर स्ट्रिंग को drawStringAtPoint के साथ खींच सकते हैं। बस लिंक के माध्यम से पढ़ें - यह आपको यह पूरा करने के लिए आवश्यक सब कुछ देता है। – sosborn

+0

ठीक है, मैं इसे देख लूंगा और देख सकता हूं कि मैं क्या कर सकता हूं। – wayneh

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