单元格数据设置后如何更新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的代理的属性和属性,我没有设法得到这个工作。