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

private func example(){
    self.labelInsideView.sizeToFit()
    viewThatContainsLabel.frame = labelInsideView.frame
    self.layoutIfNeeded()
}

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

2
Eyzuky 28 Май 2017 в 18:14

2 ответа

Лучший ответ

Создайте IBOutlet вашего ограничения ширины UIView's, а затем просто измените константу ограничения ширины на ширину UILabel

self.labelInsideView.sizeToFit()
self.widthConstraintOfView.constant = labelInsideView.frame.size.width
self.layoutIfNeeded()
2
Syed Qamar Abbas 28 Май 2017 в 15:20

Почему вы даже используете эту функцию. Ваше мнение должно иметь ограничения.

Ведущий = верхний = нижний = 8 и трейлинг> = 20

Ваш ярлык должен иметь все ограничения, равные 5.

Теперь попробуйте добавить любой текст в свой ярлык, и вы получите обновленный кадр без использования этой функции. Просто попробуйте это один раз.

0
Sahil Jaidka 28 Май 2017 в 15:44