1

在iPhone 6加“UICollectionViewFlowLayoutBreakForInvalidSizes”,收集细胞视图都很好,但如iPhone 5上的另一个设备尺寸进行测试时,我与“UICollection查看使上更小的装置

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 

反正,我可以解决这个问题呢?我需要确保细胞的比例和适合所有设备。

+0

你应该采取'UICollectionViewDelegateFlowLayout'协议自定义布局。 – nayem

+0

Jevon请看看答案,如果您有任何疑问,请让我知道。 –

回答

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) 
} 
+0

这只适用于单元本身等于设备尺寸和宽度的情况,而不是在单元试图与屏幕尺寸成正比的情况下。 –

+0

这就是你的计算,你可以给你的大小,只是例如。 –

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出口