как определить размер шрифта текста по высоте, по быстрому? - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно добавить текстовый водяной знак на изображение. Высота текста зависит от высоты изображения. Теперь я знаю высоту изображения и высоту текста. Как узнать размер шрифта текста? Короче, как определить размер шрифта текста по высоте? Теперь мое решение заключается в следующем. У кого-нибудь есть способ получше? Спасибо !!!

/// - Parameter height: target height for font
 func textFontSize(from height: CGFloat) -> CGFloat {
        var fontSize: CGFloat = 30
        var textFont = UIFont.systemFont(ofSize: fontSize)

        while (textFont.lineHeight < (height * 4 / 5) ||
            textFont.lineHeight > height){

            //decrease font size
            if textFont.lineHeight > height {
                fontSize = fontSize - 0.5

            // increase
            }else if textFont.lineHeight < (height * 4 / 5) {
                fontSize = fontSize + 0.5
            }

            textFont = UIFont.systemFont(ofSize: fontSize)
        }
        return fontSize
    }

1 Ответ

0 голосов
/ 15 октября 2019

Правильный путь был проверен

/// - Parameter height: target height for font
 func textFontSize(from height: CGFloat) -> CGFloat {
        let defaultSize: CGFloat = 30
        let defaultFont = UIFont.systemFont(ofSize: defaultSize)
        let boundSize = self.size(withAttributes: [NSAttributedString.Key.font : defaultFont])

        let pointsPerPixel = defaultFont.pointSize / boundSize.height
        let desiredPointSize = height * pointsPerPixel
        return desiredPointSize
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...