iOS UICollectionView原型单元格大小属性被忽略

我使用两个原型单元格的UICollectionView。 原型单元格具有不同的宽度并包含不同的控件(图像视图和Web视图)。 我肯定会返回给定索引的正确原型单元格(所有单元格都显示正确的内容),但原型单元格大小将被忽略,并且将使用收集视图的项目大小。 这不像我手动设置大小。 如果在实际显示时属性被忽略,允许原型单元在故事板中的大小是什么?


故事板编辑器中的单元格大小只是为了帮助您设计单元格。 由于每个原型单元的大小可能不同,因此UICollectionView不知道要为所有单元选择哪个单元的大小。 这就是为什么要分别设置要用于单元格的实际大小的原因。 您可以在设计器中通过选择集合视图并在“大小”检查器的“集合视图大小”标题下设置其“像元大小宽度和高度”。

或者,您可以覆盖以下方法并返回一个CGSize对象,该对象指定要为每个单元格使用的大小。 使用这种方法,您实际上可以让每个单元具有不同的大小:

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

例:

- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return CGSizeMake(100, 100);
}

您的视图控制器需要成为UICollectionViewDelegateFlowLayout的委托才能调用此方法。 所以不要忘记将该委托声明添加到您的视图控制器的.h文件中,例如:

@interface MyViewController () <UICollectionViewDelegateFlowLayout>

如果所有单元格大小相同,并且您可以在itemSize上设置UICollectionViewFlowLayout

例:

((UICollectionViewFlowLayout *) self.collectionViewLayout).itemSize = CGSizeMake(100, 100);

Swift,为最新的iOS工作。

(collectionView.collectionViewLayout as! UICollectionViewFlowLayout).itemSize = cellSize

我没有足够的积分来回复Sam,但关键是它不是UICollectionViewLayout而是UICollectionViewFlowLayout。

链接地址: http://www.djcxy.com/p/91633.html

上一篇: iOS UICollectionView prototype cell size property ignored

下一篇: How to center align the cells of a UICollectionView?