[英]Force UICollectionViewCell resizing after resizing UICollectionView
在我的uicollectionview委托中,我有这段代码。 基本上是根据colectionview的大小设置像元的大小。
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGFloat ratio = 200.0/280.0; // w/h
CGFloat cellWidth = (collectionView.frame.size.width-50)/4.0;
CGFloat cellHeight = cellWidth / ratio;
CGSize cellSize = CGSizeMake(cellWidth, cellHeight);
return cellSize;
}
更改collectionView框架后,如何在不重新加载collectionView的情况下强制该委托运行? 我想到的一种方法是通过遍历所有可见单元格来手动调用此功能,但对于如此简单的操作而言似乎过于繁琐。
HELLLPPPPPP
您可以像这样手动调用此委托:
CGSize size = [self collectionView:self.collectionView
layout:self
sizeForItemAtIndexPath:indexPath];
好吧,我自己找到了解决方案。 为了强制此委托在调整collectionview大小后再次运行,我们只需要重新加载SINGLE单元即可。 例如,第一个单元格。 然后collectionview将自动调整所有单元格的大小。
NSIndexPath *firstItem = [NSIndexPath indexPathForRow:0 inSection:0];
[_cardCollectionView performBatchUpdates:^{
[_cardCollectionView reloadItemsAtIndexPaths:@[firstItem]];
} completion:^(BOOL finished) {}];
无论如何,感谢大家为我提供的帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.