Нахождение NSFont Size, чтобы соответствовать определенной ширине - PullRequest
0 голосов
/ 29 апреля 2020

Я использую следующий код, чтобы найти размер NSFont для соответствия ширине, используя while l oop. Есть ли встроенная функция, облегчающая вычисления?

 let ratio = image.size.width/referenceimagesize!.width
            let fcsize=fontsize.width*ratio

            if(fontsize.width<fcsize)
            {
            while(fontsize.width==fcsize)
            {

                var newheight:CGFloat = 0;
                font = NSFont(name: font!.fontName, size: font!.pointSize+1)
                var fontAttributes = [NSAttributedStringKey.font: font]

                fontsize = (text as NSString).size(withAttributes: fontAttributes)



            }
           }

1 Ответ

0 голосов
/ 30 апреля 2020

Нет, встроенной функции нет, но почему вы используете while(fontsize.width==fcsize)? Разве сравнение не должно быть <? Попробуйте что-то вроде этого:

func findFontSize(text: String, frameWidth: CGFloat, font: NSFont) -> CGFloat {
    var textSize = text.size(withAttributes: [.font: font])
    var newPointSize = font.pointSize

    while textSize.width < frameWidth {
        newPointSize += 1
        let newFont = NSFont(name: font.fontName, size: newPointSize)!
        textSize = text.size(withAttributes: [.font: newFont])
    }

    return newPointSize
}
...