繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM