2015-02-11 2 views
3

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

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

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

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

клетка СИБ выглядит следующим образом enter image description here

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

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

+0

Какие данные вы пытаетесь отобразить? Существует ** много ** способов получить размер, который данные ** будут отображаться на экране. Для текста вы можете получить ограничивающий прямоугольник для 'NSAttributedString'. Для изображения вы можете выяснить, насколько сильно вы хотите, чтобы он отображался на экране и т. Д. Вы также можете создать прокси-представление, которое вы можете использовать повторно для целей калибровки (в моем тестировании вы не можете создать экземпляр ячейки для этой цели). Дайте мне более подробную информацию, и я постараюсь дать вам более конкретный ответ. – mbm29414

+0

Я добавил скриншот из лука –

+0

А, ок. Если у вас есть пользовательский XIB, см. Этот ответ: http://stackoverflow.com/a/28161915/394484. Должен дать вам то, что вы хотите. – mbm29414

ответ

2

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

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

Смотрите принятый ответ здесь: Using Auto Layout in UITableView for dynamic cell layouts & variable row heights

+0

Когда я попробовал аналогичный метод для 'UICollectionViewCell', это оказалось невозможным. См. Здесь: http://stackoverflow.com/a/28161915/394484 – mbm29414

+0

Возможно, проблема для макета 'UICollectionViewCell' заключается в том, что при выполнении этого вручную ширина не устанавливается. С UITableViewCell известна ширина. Возможно, фиксация ширины позволит правильно подобрать размер? Просто мысль. Однако какую ширину использовать. –

+4

На самом деле существует проблема с удалением ячейки коллекции, за исключением 'cellForItemAtIndexPath:'. По какой-то причине это падает. Я согласен, что это неожиданно, но это то, что мы обнаружили в ответе, который я связал. – mbm29414

Смежные вопросы