CollectionView高度问题

时间:2018-03-23 10:04:00

标签: ios swift uicollectionview

如何增加细胞高度。此外,我正在从故事板增加单元格高度,但它不起作用。 注意:(只有我想增加什么是新的细胞高度)

enter image description here

代码: -

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {

    if let flowLayout = collectionview.collectionViewLayout as? UICollectionViewFlowLayout {
        let horizontalSpacing = flowLayout.scrollDirection == .vertical ? flowLayout.minimumInteritemSpacing : flowLayout.minimumLineSpacing
        let cellWidth = (view.frame.width - max(0, numberOfCellsPerRow - 1)*horizontalSpacing)/numberOfCellsPerRow

        flowLayout.itemSize = CGSize(width: cellWidth, height: cellWidth)
    }


    return CGSize(width: (self.view.frame.width - 8) / 3.0 , height: (self.view.frame.width - 8) / 3.0)
}

1 个答案:

答案 0 :(得分:1)

为集合中的每个项目调用

sizeForItemAt。这段代码:

if let flowLayout = collectionview.collectionViewLayout as? UICollectionViewFlowLayout {
    let horizontalSpacing = flowLayout.scrollDirection == .vertical ? flowLayout.minimumInteritemSpacing : flowLayout.minimumLineSpacing
    let cellWidth = (view.frame.width - max(0, numberOfCellsPerRow - 1)*horizontalSpacing)/numberOfCellsPerRow

    flowLayout.itemSize = CGSize(width: cellWidth, height: cellWidth)
}

看起来它属于viewDidLoad,或者只是被调用一次的其他地方。此外,如果我没有弄错的话,当所有项目具有相同的大小时使用设置flowLayout.itemSize - 因此它不能与sizeForItemAt实现结合使用(换句话说,我会完全删除它。< / p>

这是最终应用的内容:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: (self.view.frame.width - 8) / 3.0 , height: (self.view.frame.width - 8) / 3.0)
}

因此,要更改给定collectionView中单元格的高度,只需更改返回的CGSize中的高度,例如更改为collectionView.frame.height以适合collectionView&# 39;身高:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    return CGSize(width: (self.view.frame.width - 8) / 3.0 , height: collectionView.frame.height)
}