2010-12-21 105 views

回答

1

总之:没有。你必须做一些暴力工作来确定一个字符串的-sizeWithAttributes:-boundingRectWithSize:options:attributes:与给定的字体大小(设置为NSFont NSFontAttributeName)。

我会从一个标准的系统字体大小开始,并从那里开始工作,具体取决于它是小于还是大于所需的矩形。

0

夫特4溶液:

它将调整逐一直到它适合或fontSize = 3

var size_not_ok = true 

var conter = 0 
let mininum_font_size = 3 // will resize ultil 3 
while size_not_ok || conter < 15 { // will try 15 times maximun 
    let expansionRect = le_nstextfield.expansionFrame(withFrame: le_nstextfield.frame) 

    let truncated = !NSEqualRects(NSRect.zero, expansionRect) 

    if truncated { 

     if let actual_font_size : CGFloat = le_nstextfield.font?.fontDescriptor.object(forKey: NSFontDescriptor.AttributeName.size) as? CGFloat { 

      le_nstextfield.font = NSFont.systemFont(ofSize: actual_font_size - 1) 

      if actual_font_size < mininum_font_size { 
       break 
      } 
     } 
    } else {   
     size_not_ok = false 
    } 
    conter = conter + 1 
}