ios 集合查看单元格,以便在所有设备中每行正好适合3个单元格

ccgok5k5  于 2023-05-19  发布在  iOS
关注(0)|答案(1)|浏览(141)

我正试图使图像的集合视图,以便每行有3个,与一些间距之间。
验证码:-

func setupCollectioView(){
    guard let collectionView = gridPhotosCollectionview, let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout else { return }
    flowLayout.minimumInteritemSpacing = 2
    flowLayout.minimumLineSpacing = 2
    flowLayout.sectionInset = UIEdgeInsets(top: 2, left: 2, bottom: 2, right: 2)
    gridPhotosCollectionview.delegate = self
    gridPhotosCollectionview.dataSource = self
}

func numberOfSections(in collectionView: UICollectionView) -> Int {
  return 1
}

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
     return images.count 
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let noOfCellsInRow = 3
    let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
    let totalSpace = flowLayout.sectionInset.left + flowLayout.sectionInset.right + (flowLayout.minimumInteritemSpacing * CGFloat(noOfCellsInRow - 1))
    let size = Int((collectionView.bounds.width - totalSpace) / CGFloat(noOfCellsInRow))
    return CGSize(width: size, height: size)
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    let totalCount = selectedImages.count + selectedPostDetailImages.count
    if totalCount == 1 {
        let flowLayout = collectionViewLayout as! UICollectionViewFlowLayout
        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: collectionView.frame.width - flowLayout.itemSize.width)
    }
    return UIEdgeInsets.zero
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 10
}

上面的代码适用于iPhone 11的所有设备。它在iPhone 11以下不工作。请检查所附的屏幕截图。

iPhone 11屏幕截图:-

iPhone XS屏幕截图:-

问:Swift如何设置单元格框架,使其在所有设备中每行正好适合3个单元格?
有人可以请向我解释如何做到这一点,我已经尝试了上述代码,但还没有结果。如果我做错了请纠正我。
任何帮助将不胜感激。

vjhs03f7

vjhs03f71#

是我的错,我没有将估计大小设置为零。现在一切正常

相关问题