динамическая высота UITableViewCell с использованием UIStackView

Много-много часов я изо всех сил пытался получить динамический расчет высоты строки для запущенного UITableViewCells.

StackView (закрепленный на полях UITableViewCells contentView) должен позволить мне управлять высотой ячейки, манипулируя скрытым свойством Views внутри StackView (как показано здесь: https://stackoverflow.com/a/36250618/606730)

Я добавил обязательные настройки для динамической высоты в viewContoller следующим образом:

self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 44;

Я не переопределял heightForRowAtIndexPath, так как именно здесь я хочу, чтобы автоматическая компоновка творила чудеса.

Моя проблема в том, что при первой загрузке tableView или при прокрутке tableview ячейки не захватываются правильно. Но когда я нажимаю внутри ячейки, вычисление высоты работает, и все ячейки отображаются с правильной высотой.

Я переопределил setSelected в UITableViewCell следующим образом:

-(void)setSelected:(BOOL)selected animated:(BOOL)animated{
    [UIView setAnimationsEnabled:NO];
    [super setSelected:selected animated:animated];
    self.viewInsideStackView.hidden = !selected;
    [UIView setAnimationsEnabled:YES];
}

Это вызывается при загрузке или прокрутке таблицы для каждой ячейки. Манипулирование self.viewInsideStackView.hidden должно заставить представление стека пересчитывать его высоту. Но это не работает. Я также пробовал позвонить layoutIfRequired, но все равно отображается неправильный размер, пока я не нажму ячейку.


person Jakob    schedule 12.09.2016    source источник
comment
Можете ли вы добавить несколько изображений вашего tableView? Один при первой загрузке, а второй - когда вы выбрали ячейку?   -  person Mark    schedule 12.09.2016
comment
Вы когда-нибудь это решали? Я борюсь с той же проблемой.   -  person Adam Waite    schedule 09.01.2017


Ответы (1)


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

person RyanYue    schedule 07.08.2017
comment
Кажется, это помогает, но я действительно хочу знать, почему! - person Ortwin Gentz; 27.03.2019