Размер текста в SwiftUI

У меня есть текст (который может состоять как из одной буквы, так и из большого количества строк). Как можно узнать и записать в переменную высоту и ширину всего текста?


Ответы (1 шт):

Автор решения: Данька Храповицкий

Вот код, если размер и высоты, и ширины неизвестен:

func labelSize(for text: String) -> CGSize {
    let attributes: [NSAttributedString.Key: Any] = [
        .font: UIFont.systemFont(ofSize: 17)
    ]

    let attributedText = NSAttributedString(string: text, attributes: attributes)

    let constraintBox = CGSize(width: CGFloat.greatestFiniteMagnitude, height: CGFloat.greatestFiniteMagnitude)

    let rect = attributedText.boundingRect(with: constraintBox, options: [.usesLineFragmentOrigin, .usesFontLeading], context: nil).integral

    return rect.size
}

Если известна ширина или длина, то надо в параметрах функции добавить известную величину и подставить ее в constraintBox

→ Ссылка