我有一个带标签的垂直collectionview,在我的flowlayout中,我使用 UICollectionViewFlowLayoutAutomaticSize 来调整单元格大小,但是当我给标签提供很长的字符串时,它给了我错误, label 中的行数设置为0
Error
请检查代表返回的值 . 相关的UICollectionViewFlowLayout实例是UICollectionViewFlowLayout,它附加到UICollectionView; frame =(0 88; 375 690); clipsToBounds = YES; autoresize = RM BM; gestureRecognizers = NSArray layer = CALayer; contentOffset:{0,0}; contentSize:{375,2}; adjustContentInset:{0,0,0,0}> collection view layout:UICollectionViewFlowLayout在UICollectionViewFlowLayoutBreakForInvalidSizes上创建一个符号断点,以便在调试器中捕获它 . 未定义UICollectionViewFlowLayout的行为,因为项目宽度必须小于UICollectionView的宽度减去部分insets左右值,减去内容insets左右值
Constraints
Code
let array = ["Hello", Array(repeating: "Hello", count: 100).joined(), "blah"]
// on viewDidLoad method
if let flowLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout {
flowLayout.estimatedItemSize = CGSize(width: 1, height: 1)
flowLayout.itemSize = UICollectionViewFlowLayoutAutomaticSize
}
1 回答
问题是由于某种原因,
UICollectionViewFlowLayout
没有设置单元格的最大宽度,并且因为你设置的约束条件与你一样,所以会发生一个单元格或多个单元格的width
大于collectionView
的宽度 .以下是如何修复它,在
UICollectionViewCell
子类内部的标签中添加width
约束,并将其设置为equal
,但设置为less than equal
.接下来,为该约束做出一个出口,以便以后可以设置 .
然后在
CollectionViewDataSource
cellForItemAtIndexPath
中,您可以将宽度常量设置为小于CollectionView
宽度减去您添加的填充(在我的情况下,标签的左侧和右侧填充20 20) .结果如下所示的集合视图: