2

我想在不重新加载或更改布局对象的情况下更改一个 UICollectionViewCell 的 UICollectionViewLayoutAttributes 属性

我做了

UICollectionViewLayoutAttributes *attributes = [collectionView layoutAttributesForItemAtIndexPath:indexPath];

attributes.transform = CGAffineTransformMakeScale(1.5, 1.5);

但这并没有传播到细胞——这怎么能做到呢?

4

1 回答 1

1

-[UICollectionView layoutAttributesFor...]方法返回布局属性的副本。布局返回原件后,您无法修改原件。

最好的办法是对布局进行子类化,并且无论何时返回该项目的属性(在 layoutAttributesForItem 或 layoutAttributesForElementsInRect 中),都返回修改后的属性。

如果更改确实是暂时的,您始终可以手动操作单元格变换。集合视图并不真正关心——不过,它可能会在需要重新加载单元格时重新应用属性。

于 2014-05-04T00:24:30.910 回答