我有一个收集视图与我声明的不同的项目大小
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { FeedItem *item = [_imagesLinkArray objectAtIndex:indexPath.row]; return CGSizeMake(250,200*item.sizeFactor); }
当单元格在collectionView中被重用时:cellForItemAtIndexPath:
该项目正在使用reesed项目大小呈现,而不是在sizeForItemAtIndexPath:中指定的项目.
有任何想法吗?
解决方法
看来,CollectionView:layout:sizeForItemAtIndexPath:在布局准备之前被调用一次,在呈现CollectionView之前.
所以每当你滚动和一个单元格出队时,它被调整到由collectionView提供的大小:layout:sizeForItemAtIndexPath:在准备阶段.您希望每当具有特定indexPath的单元格可见时调用此方法?所以你可以动态改变单元格大小?似乎这不是如何使用这种方法,它可以用于在布局准备阶段一次确定一个单元格的大小.
如果您因为某些原因需要重新计算尺寸,可以使用[UICollectionViewLayout invalidateLayout]使布局无效.