Измените ширину UILabel точно до длины текста в метке - PullRequest
0 голосов
/ 06 ноября 2019

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

uilabel not sized correctly

`func createTxt (fontColor: UIColor, xco: CGFloat, yco: CGFloat, widthLength: CGFloat, heightLength: CGFloat, фраза: String, fontName: String, fontSize: CGFloat) {

    let label = UILabel(frame: CGRect(x: xco, y: yco, width: widthLength, height: heightLength))
    label.textColor = fontColor
    label.font = UIFont(name: label.font.fontName, size: fontSize)
    label.textAlignment = .left
    label.text = phrase
    label.backgroundColor = .red
    self.view.addSubview(label)
}
`

Ответы [ 3 ]

1 голос
/ 06 ноября 2019

Если вам нужно найти размер этикетки и установить рамку вручную, вы можете использовать метод sizeThatFits(_:).

Пример:

let label = UILabel()
label.text = someLongText
label.frame = CGFrame(point: point, size: label.sizeThatFits(CGSize(
    width: CGFloat.infinity,
    height: yourStaticHeight
)))

В противном случае вы можете просто использоватьsizeToFit(), но вам нужно будет правильно настроить ограничения макета, чтобы это работало.

0 голосов
/ 06 ноября 2019

Если вы устанавливаете UILabel с рамкой, вы должны использовать:

label.sizeToFit()

Если вы устанавливаете UILabel в раскадровке, устанавливайте только его верх, низ и горизонтальное ограничение.

0 голосов
/ 06 ноября 2019

заполняет метку текстом и затем:

label.sizeToFit()

Затем вы можете получить доступ к свойству .frame, чтобы получить .size и .height

...