У меня есть UITableView, который я заполняю автосогласованием ячеек. UITableView
установка довольно проста:UITableViewCell макет не обновляется до тех пор, пока ячейка не будет повторно использована
tableView.estimatedRowHeight = 70
tableView.rowHeight = UITableViewAutomaticDimension
Точно так же как Apple, рекомендует здесь: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/WorkingwithSelf-SizingTableViewCells.html
Чтобы включить самостоятельно проклейки просмотр таблицы ячеек, необходимо установить RowHeight свойство представления табличной к UITableViewAutomaticDimension. Вы также должны присваивать значение свойству оценочногоRowHeight. Как только оба из этих свойств установлены, система использует автоматический макет для вычисления фактической высоты строки .
При настройке ячейки я также отключил/разрешил некоторые ограничения для достижения необходимого вида. Здесь все становится интересным. Макет ячейки не обновляется до тех пор, пока ячейка не будет повторно использована. Буквально. Вы можете позвонить layoutIfNeeded()
, setNeedsLayout()
, layoutSubviews()
или любым другим способом, нет способа заставить ячейку обновить его макет.
Все остальные аспекты работают довольно хорошо: этикетки меняют свой текст, вы скрываете/открываете представления, но макет застревает до тех пор, пока ячейка не будет повторно использована.
Вопрос: что вызывает его и как избежать такого поведения?