2013-11-11 3 views
2

Я хотел бы изменить атрибут UICollectionViewLayoutAttributes одного UICollectionViewCell без перезагрузки или изменений объекта макетаКак изменить UICollectionViewLayoutAttributes одной ячейки

Я сделал

UICollectionViewLayoutAttributes *attributes = [collectionView layoutAttributesForItemAtIndexPath:indexPath]; 

attributes.transform = CGAffineTransformMakeScale(1.5, 1.5); 

Но это не распространяющийся в камеру - Как это может быть сделано?

+0

Вы используете UICollectionViewFlowLayout? – peko

+0

Да - и объект макета уже определен - это после завершения макета –

+0

Вы пробовали 'reloadItemsAtIndexPaths:'? –

ответ

0

-[UICollectionView layoutAttributesFor...] методы возвращают копии атрибутов макета. Вы не можете изменять оригиналы после того, как макет вернет их.

Ваш лучший выбор - подкласс макета, и всякий раз, когда вы возвращаете атрибуты для этого элемента (либо в layoutAttributesForItem, либо в layoutAttributesForElementsInRect), возвращайте измененные атрибуты.

Если изменение действительно действительно временное, вы всегда можете манипулировать преобразованием ячейки вручную. Просмотр коллекции не имеет значения - он может повторно использовать атрибуты, когда ячейка должна быть перезагружена.

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