UILabel найти высоту, которая соответствует ширине - PullRequest
0 голосов
/ 09 декабря 2018

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

Я пробовал следующее:

let label = UILabel()
label.text = longText
label.numberOfLines = 0
label.sizeToFit()

Ноэто не будет работать, если longText будет похоже на "This string is really long, longer than the screen width", так как sizeToFit помещает всю строку в одну строку, а текст обрезается с помощью ..., когда он достигает ширины экрана.

Iзатем попытался установить ширину метки в соответствии с шириной экрана после вызова sizeToFit.Это позволяет переносить строку, но не регулирует высоту метки, поэтому строка по-прежнему обрезается после первой строки.

Кроме того, настройка label.adjustsFontSizeToFitWidth = true не будет работать, поскольку мне нужна метка дляконкретный размер шрифта.

Мне бы хотелось иметь какую-то функцию вроде label.minimumHeightForWidth:, где я могу передать UIScreen.main.bounds.width в качестве параметра ширины и получить высоту, которая будет соответствовать тексту надписи на всехлинии по мере необходимости с заданным параметром ширины.Можно ли сделать что-то подобное?

1 Ответ

0 голосов
/ 09 декабря 2018

Можно попробовать

let fixedWidth = UIScreen.main.bounds.width 
let newSize = lbl.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
lbl.size = CGSize(width:fixedWidth, height: newSize.height)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...