你可以通过UICollectionViewDelegateFlowLayout协议中的方法来设置每个cell的大小。在这个方法中,你可以根据cell的内容动态计算出不同的高度大小,并返回给collectionView。

首先,确保你的视图控制器遵循UICollectionViewDelegateFlowLayout协议。然后,实现该协议中的sizeForItemAt方法。在这个方法中,你可以通过indexPath参数获取到当前cell的位置,然后根据该位置计算出cell的高度。

例如,假设你的UICollectionView的cell是一个自定义的UICollectionViewCell子类,名为CustomCell。你可以在视图控制器中实现如下方法:

class YourViewController: UIViewController, UICollectionViewDelegateFlowLayout {

    // ...

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "CustomCell", for: indexPath) as! CustomCell
        
        // 计算cell的高度
        let height = calculateHeightForCell(cell)
        
        // 返回cell的大小
        return CGSize(width: collectionView.bounds.width, height: height)
    }
    
    func calculateHeightForCell(_ cell: CustomCell) -> CGFloat {
        // 根据cell的内容计算出高度,这里只是一个示例
        let contentHeight = cell.calculateContentHeight()
        
        // 在这里根据contentHeight计算出最终的cell高度
        let finalHeight = contentHeight + 20 // 加上一些额外的高度
        
        return finalHeight
    }

    // ...
}

在这个例子中,我们假设cell的高度是根据其内容的高度来动态计算的。你可以在calculateHeightForCell方法中实现具体的计算逻辑,并返回最终的cell高度。

同时,你还需要在你的UICollectionView注册CustomCell类,以便能够正确地使用它:

collectionView.register(CustomCell.self, forCellWithReuseIdentifier: "CustomCell")

这样,当collectionView调用sizeForItemAt方法来确定每个cell的大小时,它会首先从注册的CustomCell类中获取一个实例,然后根据这个实例计算出cell的高度,并返回给collectionView


原文地址: https://www.cveoy.top/t/topic/iSRC 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录