我有3个不同的collectionViewCells,它们应该是不同的大小,我已经将它们全部设置为具有自定义大小,但是单元格大小恢复到在运行时期间由collectionView设置的默认大小。我已经在cellForIndexPath
cell.frame = CGRectMake(cell.frame.origin.x, cell.frame.origin.y, cell.frame.size.width, 200)
答案 0 :(得分:1)
collectionView(_:cellForItemAtIndexPath:)
是UICollectionViewDataSource
的成员,这意味着它处理单元格的数据填充,而不是视觉呈现。关于此方法的Apple文档指出:“您不需要在集合视图的边界内设置单元格的位置。集合视图使用其布局对象提供的布局属性自动设置每个单元格的位置。”很可能你正在设置框架,布局对象会覆盖该值。
您正在寻找的是UICollectionViewDelegateFlowLayout
collectionView(_:layout:sizeForItemAtIndexPath:)
方法。您可以在此处指定单个单元格的帧大小。如果你想变得非常疯狂,你甚至可以编写自己的布局。