2016-01-22 7 views
5

की ऊंचाई और चौड़ाई फिट करने के लिए फ़ॉन्ट आकार को समायोजित करने के लिए मेरे पास एक वर्ग UILabel (पीले रंग में) है जिसमें एकल अक्षर होता है। , फ़ॉन्ट आकार के अनुसार हैUILabel

letterLabel.font = UIFont(name: letterLabel.font.fontName, size: 100) 
letterLabel.adjustsFontSizeToFitWidth = true 
letterLabel.textAlignment = NSTextAlignment.Center 

के रूप में स्क्रीनशॉट में स्पष्ट:

enter image description here

मैं फ़ॉन्ट आकार ऐसी है कि वह UILabel में फिट बैठता है समायोजित करने के लिए this SO answer से निम्नलिखित कोड का इस्तेमाल किया है चौड़ाई। लेकिन चूंकि पाठ केवल एक पत्र है, इसलिए हमें ऊंचाई को देखने की भी आवश्यकता है। हम फ़ॉन्ट आकार को कैसे समायोजित कर सकते हैं जैसे ऊंचाई UILabel के भीतर भी है?

+0

'letterLabel.sizeToFit उपयोग करने का प्रयास()' – b26

उत्तर

-3

प्रयास करें [label sizeToFit] या [label sizeThatFits:(CGSize)]

+4

इस लेबल के आकार फिट करने के लिए समायोजित कर देता है पाठ, विपरीत नहीं, जैसा कि पूछा गया था। –

0

मैं किसी भी सरल उपाय तो मैं इस विस्तार बनाया नहीं मिला:

extension UILabel { 
    func setFontSizeToFill() { 
     let frameSize = self.bounds.size 
     guard frameSize.height>0 && frameSize.width>0 && self.text != nil else {return} 

     var fontPoints = self.font.pointSize 
     var fontSize = self.text!.size(withAttributes: [NSAttributedStringKey.font: self.font.withSize(fontPoints)]) 
     var increment = CGFloat(0) 

     if fontSize.width > frameSize.width || fontSize.height > frameSize.height { 
      increment = -1 
     } else { 
      increment = 1 
     } 

     while true { 
      fontSize = self.text!.size(withAttributes: [NSAttributedStringKey.font: self.font.withSize(fontPoints+increment)]) 
      if increment < 0 { 
       if fontSize.width < frameSize.width && fontSize.height < frameSize.height { 
        fontPoints += increment 
        break 
       } 
      } else { 
       if fontSize.width > frameSize.width || fontSize.height > frameSize.height { 
        break 
       } 
      } 
      fontPoints += increment 
     } 

     self.font = self.font.withSize(fontPoints) 
    } 
}