Я недавно начал работу над приложением, использующим Swift в XCode, и пытаюсь создать текстовый пузырь.Для этого мне нужно получить ширину самой длинной строки текста в многорядной UILabel.Например, если у меня есть этот текст (я автоматически устанавливаю разрывы строк после определенной длины):
Hello there, this is
an example piece of text
Я хотел бы вернуть ширину текста во второй строке.Я уже пытался использовать sizeToFit (), который значительно упростил бы мою работу, но из-за моего другого кода это не вариант, так как это вызывает другие проблемы (мой код ниже).Есть ли чисто программный способ получить это значение без использования sizeToFit ()?Любая помощь приветствуется.Мой код:
bubbleContents.text = textMessage
bubbleContents.numberOfLines = 0
bubbleContents.lineBreakMode = .byWordWrapping
bubbleContents.bounds.size.width = 2000
var widthText = bubbleContents.intrinsicContentSize.width
bubbleContents.bounds.size.width = 266
print(textMessage)
print(widthText)
if widthText > 266 {
let numRows = Int(widthText/266)
print(numRows)
//bubbleContents.frame.origin.y += CGFloat((Double(numRows)*10.25))
var currentHeight = 44.0
currentHeight += Double((Double(numRows)*20.5))
bubbleContents.bounds.size.height = CGFloat(currentHeight)
heightOfCell = Double(currentHeight)
let originalTransform = self.bubbleContents.transform
let scaledTransform = originalTransform
let scaledAndTranslatedTransform = scaledTransform.translatedBy(x: 0, y: CGFloat(Double(numRows)*20.5))
//self.bubbleContents.transform = scaledAndTranslatedTransform
}
else {
heightOfCell = 44.0
}
bubble.frame = CGRect(x: 0, y: 0, width: Double(widthText + 30), height: heightOfCell - 4)
bubbleContents.center.y = bubble.center.y
Вот изображение того, как выглядят мои текущие текстовые пузыри: