如何在UICollectionView的第一次出现时更改UICollectionViewCell元素的大小

时间:2014-01-29 11:10:08

标签: ios objective-c uicollectionview

我需要构建一个包含9个单元格的UICollectionView,第一个UICollectionViewCell的元素应该比其他元素大。我是这样做的:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView 
cellForItemAtIndexPath:(NSIndexPath *)indexPath{
if (hero == YES) {
    CGRect cellbounds = cell.firstView.bounds;
    cellbounds.size = CGSizeMake(10, 10);
    cell.firstView.bounds = cellbounds;
}
else{

    CGRect cellbounds = cell.firstView.bounds;
    cellbounds.size = CGSizeMake(100, 100);
    cell.firstView.bounds = cellbounds;
}

问题是我第一次启动我的应用程序时,所有单元格都有默认大小,并且只有在刷新了CollectionViewCell后才会应用所需的大小(我使用过layoutIfNeeded)。

- (void)viewWillLayoutSubviews
{
    [self.CollectionView layoutIfNeeded];
}

请告诉我,我做错了什么?

2 个答案:

答案 0 :(得分:0)

尝试在控制器的viewDidAppear中调用 [self.CollectionView reloadData];

答案 1 :(得分:0)

您应该实现此委托方法,我假设您正在使用flowLayout。

- (CGSize)collectionView:(UICollectionView *)collectionView 
                  layout:(UICollectionViewLayout*)collectionViewLayout 
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath

参考:UICollectionViewDelegateFlowLayout