我在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中提供的标识符来实例化单元格?
答案 0 :(得分:7)
IB中单元格的大小(用于集合视图和表格视图)仅用于布局目的,它对运行时的大小没有影响。您应该实现UICollectionViewDelegateFlowLayout方法collectionView:layout:sizeForItemAtIndexPath:为每个项返回正确的大小。