如何设置原型UICollectionViewCell的大小

时间:2013-05-03 00:47:48

标签: ios uicollectionview uicollectionviewcell

我在IB中有一个带有许多不同原型单元的UICollectionView。

我试图在IB中为每个单元格赋予自己的大小,这样当我使用dequeueReusable实例化它时,它将具有该大小。然而,我发现,对于你的细胞,你的IB设置无关紧要,你的集合视图会对其中使用的所有细胞使用自己的细胞大小。

这是一个错误吗?如果不是为所有单元格设置自定义大小的最佳方法是什么?

我也尝试过:

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

    NSString* cellIdentifier = self.cellIdentifier;
    ImageCell* cell =  [collectionView dequeueReusableCellWithReuseIdentifier:self.cellIdentifier forIndexPath:indexPath];

    return [cell sizeOfCell];
}

但由于某些原因,当此功能中的单元格出列时应用程序崩溃。

我已经将所有原型单元子类化,并且有一个函数让它们返回自己的大小。有没有其他方法可以使用您在IB中提供的标识符来实例化单元格?

1 个答案:

答案 0 :(得分:7)

IB中单元格的大小(用于集合视图和表格视图)仅用于布局目的,它对运行时的大小没有影响。您应该实现UICollectionViewDelegateFlowLayout方法collectionView:layout:sizeForItemAtIndexPath:为每个项返回正确的大小。