2012-03-16 20 views
6

मेरे आईफोन ऐप में मैंने सभी UILabels के लिए एक कस्टम फ़ॉन्ट सेट किया है (अधिक सटीक होने के लिए, मैंने UILabel को उपclassed, एक विधि को ओवरराइड करना, उस विधि में कस्टम फ़ॉन्ट सेट करना और फिर सभी लेबल को आईबी में सेट करना है वह कस्टम वर्ग)। अब समस्या यह है कि सभी ग्रंथों को अपेक्षित आधार रेखा से बहुत दूर प्रदान किया जाता है, इसलिए 'वाई' और 'जी' जैसे अक्षरों को काट दिया जाता है। मैं इसी तरह की समस्याओं के बारे में यहाँ पढ़ा है:कस्टम फ़ॉन्ट के साथ UILabel

UIButton custom font vertical alignment

Custom installed font not displayed correctly in UILabel

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

क्या इस समस्या को हल करने का कोई व्यावहारिक तरीका है? निस्संदेह मैं कई फोंट को बहु-एकल या एकल-पंक्ति ग्रंथों के लिए रख सकता हूं, लेकिन यह एक बदसूरत समाधान है ..

पीएस: फ़ॉन्ट ओटीएफ प्रारूप में प्रदान किया गया है, हालांकि मैंने इसे ttf में परिवर्तित करने का प्रयास किया , एक ही परिणाम के लिए अग्रणी।

उत्तर

6

ठीक है, बस अगर कोई दिलचस्पी लेता है, तो मुझे एक कामकाज पता चला जो मेरे लिए काम करना चाहिए। इसमें बस drawTextInRectUILabel की विधि को ओवरराइड करने, दिए गए आयत को संशोधित करने और सुपरक्लास विधि पर पास करने के लिए शामिल है।

- (void)drawTextInRect:(CGRect)rect { 
    CGFloat pointSize = self.font.pointSize; 

    CGRect newRect = CGRectMake(rect.origin.x, rect.origin.y - (0.25 * pointSize), rect.size.width, rect.size.height); 

    [super drawTextInRect:newRect]; 
} 

मैं 0.25 हालांकि अलावा अन्य विभिन्न मूल्यों की कोशिश करना पड़ सकता है ...

+0

मैं इस का इस्तेमाल किया। - (शून्य) drawTextInRect: (CGRect) rect { CGFloat pointSize = self.font.point आकार; CGRect newRect = CGRectMake (rect.origin.x, rect.origin.y + (0.2 * पॉइंटसाइज), rect.size.width, rect.size.height); [सुपर drawTextInRect: newRect]; } – kgibbon