单元格数据设置后如何更新UICollectionView中的单元格大小?

所以我有一个UICollectionView在每个单元格中具有不同大小的不同图像。 当调用cellForItemAtIndexPath:时,我使用在Web上asynchronous获取图像的方法更新UICollectionViewCell,并将其显示为完整大小。

我的问题是我的单元格的大小已经设置之前sizeForItemAtIndexPath。 我希望它被召回,以便单元格具有下载的图像大小。

我怎样才能做到这一点?

如果您已经设置了大小,请find要刷新的单元格的索引:

NSIndexPath * indexPathOfCellToResize = // index path of cell to refresh [myCollectionView reloadItemsAtIndexPaths:@[indexPathOfCellToResize]]; 

有可能是一个更好的方法来做到这一点,但这里有一些工作:

在你的单元格中创build一个委托协议

 @protocol CellDelegate - (void) imageIsReadyForCell:(id)cell; @end 

代表财产

 @property (strong, nonatomic) id<CellDelegate>delegate; 

在Cell中,当图像完成调用时:

 [self.delegate imageIsReadyForCell:self]; 

然后在您的文件托pipecollectionView中的界面

 @interface SomeViewController : UIViewController <CellDelegate> 

而在.m

 - (void) imageIsReadyForCell:(id)cell { NSIndexPath * indexOfReadyCell = [yourCollectionView indexPathForCell:cell]; [myCollectionView reloadItemsAtIndexPaths:@[indexPathOfReadyCell]]; } 

不是一个答案,但我没有足够的声誉评论。

林试图更新我的collectionviewcell,我已经把图像加载下:

 [self.delegate imageReadyForCell:cell] 

但是这并没有改变任何东西,我已经在imageReadyForCell的方法内部放置了断点,但它甚至没有达到它。 我遵循上面所做的所有步骤,使用CellDelegate的代理的属性和属性,我没有设法得到这个工作。