如何从cellForItemAtIndexPath设置UICollectionViewCell高度?

时间:2016-05-22 13:01:04

标签: ios swift uicollectionview uicollectionviewcell

所以,我想从cellForItemAtIndexPath而不是从

设置UICollectionViewCell高度
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {

我该怎么办?所以我想在cellForItemAtIndexPath中为我的单元格提供高度和宽度,而不是collectionViewLayout: sizeForItemAtIndexPath

2 个答案:

答案 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);
>     
>     }