2016-01-22 107 views
5

我有一个包含单个字母的方形UILabel(黄色)。如何调整字体大小以适合UILabel的高度和宽度

enter image description here

我已经使用从this SO answer下面的代码来调整字体大小,使得其配合到的UILabel:

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

在截图可知,字体大小根据宽度。但由于文本只是一个字母,所以我们也需要看高度。我们如何调整字体大小以使高度也在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) 
    } 
} 
相关问题