Вычисление sizeForItemAtIndexPath в UICollectionView без использования ячеек

Я нахожусь в цикле с самим собой, откуда получить размер ячейки в представлении коллекции, если у меня есть ячейка с автомаркетом

Я понимаю, что sizeForItemAtIndexPath должен получать размер от данных, а не от самой ячейки, потому что ячейка еще не нарисована, но в автоматическом макете я не могу вычислить это, просто посмотрев на данные, если только я помещайте в код запреты таким образом, чтобы я мог позже вычислить их (кажется кривым)

С другой стороны, UIView имеет intrinsicContentSize и systemLayoutSizeFittingSize, который дает размер представления, которое уже нарисовано или будет нарисовано.

Но в sizeForItemAtIndexPath у меня пока нет представления, и данные - это просто данные.

ячейка выглядит так:

Каким образом я могу получить размер пользовательской ячейки (из .nib)?

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

1 ответ

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

Это общий подход для UITableView pre iOS8 для определения высоты ячейки. Такой же подход должен работать для UICollectionView.

См. принятый ответ здесь: Использование автоматической компоновки в UITableView для динамических раскладок ячеек и высоты строк в строке

licensed under cc by-sa 3.0 with attribution.