Ваше требование довольно простое и может быть удовлетворено с помощью UITableView
.Используйте динамический UITableViewCell
.Причина, по которой я выбираю ячейку динамического табличного представления, заключается в том, что вы можете изменить размер ячейки в соответствии с содержимым.Измерьте размер вашего контента внутри tableView:heightForRowAtIndexPath:
.
Поток будет следующим:
- Инициируйте вызов API
- Пока данныеНедоступно, верните высоту ячейки в соответствии с вашим представлением заполнителя (т.е. высотой изображения заполнителя)
- Пока данные доступны, обработайте ваши данные и перезагрузите табличное представление
- После перезагрузки табличного представления, просмотр таблицы еще раз спросит высоту каждой ячейки, так что это шанс, который вы получите для расчета высоты содержимого.(Я предполагаю, что вы можете измерить высоту строки при заданной ширине строки и шрифте. Пожалуйста, Google, это очевидно.)
- вернуть эту вычисленную высоту.
Возможности оптимизации: Вместо того, чтобы каждый раз пересчитывать высоту ячейки, вы можете вычислить высоту ячейки один раз и сохранить эту высоту в простом словаре с ключом IndexPath
.