有没有像UILabel的adjustsFontSizeToFitWidth
这样的东西可以用于NSTextField?
有没有像UILabel的adjustsFontSizeToFitWidth
这样的东西可以用于NSTextField?
Swift 4 解决方案:
它会逐个调整大小,直到符合要求,或者最小字体大小为3。
let minimumFontSize = 3
var sizeNotOkay = true
var attempt = 0
while sizeNotOkay || attempt < 15 { // will try 15 times maximun
let expansionRect = textField.expansionFrame(withFrame: textField.frame)
let truncated = !NSEqualRects(NSRect.zero, expansionRect)
if truncated {
if let actualFontSize : CGFloat = textField.font?.fontDescriptor.object(forKey: NSFontDescriptor.AttributeName.size) as? CGFloat {
textField.font = NSFont.systemFont(ofSize: actualFontSize - 1)
if actualFontSize < minimumFontSize {
break
}
}
} else {
sizeNotOkay = false
}
attempt += 1
}
我想出了自己的解决方案(并不是一个好的解决方案!只是以防万一有人找不到更好的解决方案)
extension NSTextField {
func fontSizeToFit() {
if stringValue.count > 90 {
font = NSFont.systemFont(ofSize: 40)
} else {
font = NSFont.systemFont(ofSize: CGFloat(120 - stringValue.count))
}
}
}