Измените размер шрифта NSTextField, чтобы соответствовать - PullRequest
4 голосов
/ 21 декабря 2010

Есть ли что-либо подобное UILabel adjustsFontSizeToFitWidth, которое можно использовать с NSTextField?

Ответы [ 2 ]

1 голос
/ 22 декабря 2010

Короче говоря: нет.Вы должны выполнить грубую работу, чтобы определить -sizeWithAttributes строки: -boundingRectWithSize: options: attribute: с заданным размером шрифта (устанавливается как NSFont для NSFontAttributeName).*

Я бы начал со стандартного размера системного шрифта и работал бы вниз или вверх, в зависимости от того, меньше он или больше желаемого прямоугольника.

0 голосов
/ 23 декабря 2017

Решение 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
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...