我有一个带有标签的垂直collectionview,并且在我的布局中,我正在使用 UICollectionViewFlowLayoutAutomaticSize
来调整单元格的大小,但是当我给标签很长的字符串时,它给了我错误, label
中的行数设置为0
错误
请检查委托返回的值。 相关
UICollectionViewFlowLayout实例是UICollectionViewFlowLayout,并且 它附加到UICollectionView;框架=(0 88; 375 690); clipsToBounds = YES;自动调整大小= RM + BM; poseRecognizers = NSArray 层= CALayer; contentOffset:{0,0}; contentSize:{375,2}; AdjustedContentInset:{0,0,0,0}>集合视图布局: UICollectionViewFlowLayout
在以下位置设置符号断点 UICollectionViewFlowLayoutBreakForInvalidSizes可以在 调试器。
未定义UICollectionViewFlowLayout的行为,因为 项目宽度必须小于UICollectionView的宽度 减去部分插图的左右值,减去内容 插入左右值
约束
代码
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
}
答案 0 :(得分:1)
问题是由于某种原因class WordSerializer(serializers.ModelSerializer):
seniority_id = serializers.SerializerMethodField()
department_id = serializers.SerializerMethodField()
score_nr = serializers.SerializerMethodField()
cuvint = serializers.SerializerMethodField()
class Meta:
model = Word
fields = ("cuvint", "frequency", "is_stem", "score_nr", "department_id", "seniority_id")
def get_seniority_id(self, obj):
if obj.seniority_id:
return obj.seniority_id.name
return None
def get_department_id(self, obj):
if obj.department_id:
return obj.department_id.name
return None
def get_score_nr(self, obj):
return obj.score_nr.score_nr
def get_cuvint(self, obj):
return obj.cuvint.cuvint
并没有设置单元格的最大宽度,并且由于您像这样设置了约束,所以发生的情况是一个单元格或多个单元格的UICollectionViewFlowLayout
是大于width
的宽度。
这里是解决方法,将collectionView
约束添加到width
子类中的标签并将其设置为UICollectionViewCell
而不是equal
。
下一步,对该限制进行出口,以便以后可以进行设置。
然后在less than equal
CollectionViewDataSource
中,您可以将宽度常数设置为小于cellForItemAtIndexPath
宽度减去您添加的填充(在我的情况下,标签的左边和右边分别为20 + 20)
CollectionView
结果是如下所示的集合视图: