ios – UICollectionView:不重新使用的项目不计算不同大小的项目

前端之家收集整理的这篇文章主要介绍了ios – UICollectionView:不重新使用的项目不计算不同大小的项目前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个收集视图与我声明的不同的项目大小
- (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]使布局无效.

猜你在找的iOS相关文章