Я изучаю это уже более суток, и я могу честно сказать, что я полностью в шоке от того, почему это не работает, как я ожидал бы этого.Изменение размера UITableViewCell на основе содержимого UILabel
Я пытаюсь развернуть UITableViewCell, когда выбран правильный размер на основе UILabel внутри него. Я использовал следующий код для определения требуемого размера для UILabel:
extension UILabel {
func requiredHeight() -> CGFloat{
let label:UILabel = UILabel(frame: CGRectMake(0, 0, self.frame.width, CGFloat.max))
label.text = self.text
label.numberOfLines = 0
label.font = self.font
label.sizeToFit()
print("Final Size - \(label.frame.height)")
return label.frame.height + 10
}
}
Мой вопрос, несмотря на этот размер - когда клетка изменяется в методе «heightForRowAtIndexPath» - это еще не правильный размер и строка усекается, это видно на рисунке ниже.
отметить - я собираю необходимый размер ячейки, как только загрузится вид и текст был заселен в UILabel.
requiredHeight = overviewLabel.requiredHeight()
if requiredHeight > overviewCell.frame.height {
expander.hidden = false
} else {
expander.hidden = true
}
Любые советы о том, как это можно исправить, будут очень признательны.
О, ничего себе, это было так просто. Могу ли я спросить, почему для этого требуется, чтобы шрифт был определен вручную? Я нахожу это чрезвычайно странным, я не могу использовать 'label.font = self.font' –
Это сработало для вас? –
Я тоже однажды попался в ту же проблему. Может быть какая-то странная проблема, что label.font = self.font не работает. Я искал где-то, что просто предоставляет точный шрифт и размер того, что использует UILabel с небольшим количеством ограничений. По крайней мере, это сработало для меня, как насчет тебя? –