ios swift UICollectionVIew问题:未定义UICollectionViewFlowLayout的行为,因为

问题描述 投票:0回答:1

我正在使用流布局使用UICollectionView。我已经制作了一个带有水平的自定义UICollectionView。错误-

由于以下原因,未定义UICollectionViewFlowLayout的行为:项目高度必须小于UICollectionView的高度减去该部分插入的顶部和底部值,减去内容插入的顶部和底部值。

相关的UICollectionViewFlowLayout实例为,并且已附加到;层=; contentOffset:{-8,-8}; contentSize:{0,100}>集合视图布局:。2019-11-18 11:51:59.017124 + 0530 eVyapaar_Grocery [3964:1811183]在UICollectionViewFlowLayoutBreakForInvalidSizes处创建符号断点,以在调试器中捕获此断点。

Here is my code:
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(UINib(nibName: "cellID", bundle: nil), forCellWithReuseIdentifier:"cellID")
collectionView.contentInset = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8)
collectionView.showsHorizontalScrollIndicator = false
collectionView.isScrollEnabled = true
if let layout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
       layout.scrollDirection = .horizontal
       collectionView!.collectionViewLayout = layout
}

extension ViewController: UICollectionViewDelegateFlowLayout {
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        if collectionView == myCcollectionView {
            var width: CGFloat = 0
            if UIDevice.isIpad {
                width = ((UIScreen.main.bounds.width/6)-6)
            } else {
                width = ((UIScreen.main.bounds.width/3)-6)
            }
            return CGSize(width: width, height: width)
        } 
    }

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

    }

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

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
        return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    }
}
ios swift uicollectionview uicollectionviewlayout
1个回答
1
投票

正如错误所说,您的单元格大小必须小于collectionView的高度和宽度减去内容插图,以适合视图内的单元格。由于无法通过提供的代码看到collectionView的大小,因此无法确定答案,但是请尝试减小collectionView单元的大小。还请注意,您正在将contentInsets设置在2个不同的位置,

这里:

collectionView.contentInset = UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8)

和这里:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) }

编辑:尝试给他们这个大小:

extension ViewController: UICollectionViewDelegateFlowLayout { func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize { if collectionView == myCcollectionView { var width: CGFloat = 0 if UIDevice.isIpad { width = ((collectionView.frame.width/6)-8) } else { width = ((collectionView.frame.width/3)-8) } return CGSize(width: width, height: width) } }

© www.soinside.com 2019 - 2024. All rights reserved.