我正在使用流布局的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)
}
}
答案 0 :(得分: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)
}
}