UICollection查看原因" UICollectionViewFlowLayoutBreakForInvalidSizes"在较小的设备上

时间:2017-06-15 06:04:38

标签: ios swift uicollectionview uicollectionviewcell uicollectionviewlayout

在iPhone 6 Plus上,集合视图单元格很好,但是当测试其他设备尺寸如iPhone 5时,我会用"

进行轰炸
  

017-06-15 01:59:25.744 HyperTest [3865:8825385]未定义UICollectionViewFlowLayout的行为,因为:   2017-06-15 01:59:25.744 HyperTest [3865:8825385]项目宽度必须小于UICollectionView的宽度减去部分插入左右值,减去内容插入左右值。   2017-06-15 01:59:25.745 HyperTest [3865:8825385]相关的UICollectionViewFlowLayout实例是,并附加到; layer =; contentOffset:{0,0}; contentSize:{414,219}>集合视图布局:。   2017-06-15 01:59:25.745 HyperTest [3865:8825385]在UICollectionViewFlowLayoutBreakForInvalidSizes上创建一个符号断点,以便在调试器中捕获它。

特别是当我这样做时:

let layout = billFeedCollectionView.collectionViewLayout as? UICollectionViewFlowLayout // casting is required because UICollectionViewLayout doesn't offer header pin. It's feature of UICollectionViewFlowLayout
    layout?.sectionHeadersPinToVisibleBounds = true
    layout?.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize

无论如何,我可以解决这个问题吗?我需要确保细胞能够适应所有设备。

3 个答案:

答案 0 :(得分:2)

通过确认您班级的UICollectionViewDelegate。委托方法sizeForItemAtIndexPath将从UICollectionViewDelegateFlowLayout拨打电话,这将在您的班级中调用,现在您可以返回UICollectionViewCell的大小。

这对我有用

方式:

collectionView.delegate = self

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
     return CGSizeMake(collectionView.frame.size.width, collectionView.frame.size.height)
}

答案 1 :(得分:0)

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

        let cellsize = CGSize(width: (CollectionView.bounds.size.width/2) - 12, height:(CollectionView.bounds.size.height/3) - 20)



        return cellsize
    }

此处CollectionView是UICollectionView的出口

答案 2 :(得分:0)

当您在UITableViewCell中具有collectionView时,该单元格实际上会将collectionView的高度调整为0也是可能的。

在我的情况下,collectionView显示UIImageView的数组以在每个单元格中显示一些图像库。 如果该单元格不应该显示任何图像(例如,没有图像的文本),则collectionView被隐藏。

collectionView,如果放在StackView中可能需要限制高度,并且要避免冲突,您可能需要将其设置为优先级999。

然后,当您隐藏 collectionView时,它将实际上尝试将高度设置为0。 collectionView仍可以在其中包含图像,这将触发错误。

解决方案:在配置单元格时清空datasource并重新加载collectionView