2016-01-22 41 views
5

Tôi có một hình vuông UILabel (màu vàng) có chứa một chữ cái.Cách điều chỉnh kích thước phông chữ để phù hợp với chiều cao và chiều rộng của UILabel

enter image description here

Tôi đã sử dụng đoạn mã sau từ this SO answer để điều chỉnh kích thước phông chữ như vậy mà nó phù hợp với các UILabel:

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

Như rõ ràng trong ảnh chụp màn hình, kích thước phông chữ là theo chiều rộng. Nhưng vì văn bản chỉ là một chữ cái, do đó chúng ta cũng cần phải nhìn vào chiều cao. Làm thế nào chúng ta có thể điều chỉnh kích thước phông chữ sao cho chiều cao cũng nằm trong UILabel?

+0

thử sử dụng 'letterLabel.sizeToFit()' – b26

Trả lời

-3

Hãy thử [label sizeToFit] hoặc [label sizeThatFits:(CGSize)]

+4

này điều chỉnh kích thước của nhãn để phù hợp với văn bản, không phải ngược lại, như đã được hỏi. –

0

tôi không tìm thấy bất kỳ giải pháp đơn giản vì vậy tôi đã mở rộng này:

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) 
    } 
} 
Các vấn đề liên quan