在调整UICollectionView大小后强制UICollectionViewCell调整大小

时间:2017-02-07 05:13:03

标签: ios objective-c 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

2 个答案:

答案 0 :(得分:0)

您可以像这样手动调用此委托:

CGSize size = [self collectionView:self.collectionView 
                            layout:self 
            sizeForItemAtIndexPath:indexPath];

答案 1 :(得分:0)

好的,我自己找到了解决方案。为了在调整collectionview之后强制此委托再次运行,我们只需要重新加载SINGLE单元格。例如,第一个单元格。然后collectionview将自动调整所有单元格的大小。

 NSIndexPath *firstItem = [NSIndexPath indexPathForRow:0 inSection:0];
            [_cardCollectionView performBatchUpdates:^{
                [_cardCollectionView reloadItemsAtIndexPaths:@[firstItem]];
            } completion:^(BOOL finished) {}];

无论如何,感谢所有人试图帮助我。