所以,我想从cellForItemAtIndexPath
而不是从
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
我该怎么办?所以我想在cellForItemAtIndexPath
中为我的单元格提供高度和宽度,而不是collectionViewLayout: sizeForItemAtIndexPath
答案 0 :(得分:2)
您仍然必须使用sizeForItemAtIndexPath
,但您可以在swift文件的顶部声明一个公共变量:
var cellSize = CGSize()
并在cellForRowAtIndexPath
委托中在return cell
之前写下这样的内容:
cellSize = CGSizeMake(100, 100) // set your desired width and height
然后:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
return cellSize
}
答案 1 :(得分:0)
您可以通过UICollectionViewFLowLayout
为他们提供估算高度的一种方法 UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout*) self.CollectionViewLayout.collectionViewLayout;
flowLayout.estimatedItemSize = CGSizeMake(self.view.frame.size.width,yourheight);
但如果所有单元格都需要具有不同的高度,那么您需要实现 sizeForItemAtIndexPath方法形式为UICollecionViewController。
> (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout
> sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
> return CGSizeMake(width, height);
>
> }