में लंबवत फिट करने के लिए फ़ॉन्ट आकार स्केलिंग मैं मानक UILabel लेना चाहता हूं और फ़ॉन्ट आकार को बढ़ा सकता हूं ताकि यह लंबवत स्थान भर सके। इस question के लिए स्वीकार किए जाते हैं जवाब से प्रेरणा ले रहा है, मैं इस drawRect कार्यान्वयन के साथ UILabel पर एक उपवर्ग परिभाषित:UILabel
- (void)drawRect:(CGRect)rect
{
// Size required to render string
CGSize size = [self.text sizeWithFont:self.font];
// For current font point size, calculate points per pixel
float pointsPerPixel = size.height/self.font.pointSize;
// Scale up point size for the height of the label
float desiredPointSize = rect.size.height * pointsPerPixel;
// Create and assign new UIFont with desired point Size
UIFont *newFont = [UIFont fontWithName:self.font.fontName size:desiredPointSize];
self.font = newFont;
// Call super
[super drawRect:rect];
}
लेकिन के रूप में यह लेबल के नीचे से बाहर फ़ॉन्ट मापता है यह काम नहीं करता। यदि आप इसे दोहराना चाहते हैं, तो मैंने लेबल 28 9 x122 (डब्ल्यू एक्स एच), हेल्वेटिका को फ़ॉन्ट के रूप में शुरू किया और 60 का प्रारंभिक बिंदु लेबल में आराम से फिट बैठता है।
मैं, फ़ॉन्ट descenders और आरोहक देखा है स्केलिंग की कोशिश की में ध्यान में इन लेने: यहाँ मानक UILabel और मेरे उपवर्ग से उदाहरण उत्पादन स्ट्रिंग "{एचजी" उपयोग कर रहा है विभिन्न संयोजन, लेकिन अभी भी कोई भाग्य नहीं है। कोई विचार, क्या अलग-अलग फोंट के साथ ऐसा करने के लिए कुछ अलग-अलग अवरोधक और आरोही लंबाई है?
अच्छी तरह से ... यह एक शर्मनाक सरल गलती थी। इसे तलाशने के लिए धन्यवाद। – user524261
मैंने इसे 'लेआउट सबव्यूव्स 'में लागू करने का प्रयास किया, लेकिन मुझे नहीं लगता कि यह काम करता है। मुझे लगता है कि कारण यह है कि 'उइलाबेल' उप-वर्ग में एक नया फ़ॉन्ट असाइन करने से 'लेआउट सबव्यूव्स 'का एक और आमंत्रण ट्रिगर होता है, जो समस्याग्रस्त है। मेरे कार्यान्वयन में, मेरे ऐप की कतारों में से एक लॉक हो गया। – user444731