1

我在 IB 中有一个 UICollectionView,里面有一堆不同的原型单元。

我试图在 IB 中为每个单元格赋予其自己的大小,以便当我使用 dequeueReusable... 对其进行实例化时,它将具有该大小。然而,我发现的是,您在 IB 中的设置对于您的单元格是什么并不重要,您的 collectionview 对其中使用的所有单元格使用自己的单元格大小。

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

我也试过:

- (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 中给它的标识符实例化一个单元格?

4

1 回答 1

7

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

于 2013-05-03T02:05:49.857 回答