我正在尝试根据
中包含的标签文本的长度调整每个集合视图单元的大小func collectionView(collectionView: UICollectionView, layout collectionViewLayout:UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var size = CGSize()
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("lessonCell", forIndexPath: indexPath) as UICollectionViewCell
var label: UILabel = cell.viewWithTag(300) as UILabel
var labelSize = label.frame.size
size = labelSize
return size
}
运行代码时,应用程序崩溃,错误为“流量布局不支持负值或零大小”。然而,当我介入时,我发现崩溃发生在初始化单元格变量,甚至在确定大小之前。为什么初始化我的单元格变量会抛出这种类型的错误?
答案 0 :(得分:5)
我发现了我的问题。我当时正在使用collectionView.dequeueReusableCellWithReuseIdentifier(),而实际上这只应该与“cellForItemAtIndexPath”委托方法一起使用。对我有用的是以下代码:
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var size = CGSize(width: 0, height: 0)
var label = UILabel()
label.text = category[indexPath.row]
label.sizeToFit()
var width = label.frame.width
size = CGSize(width: (width+20), height: 50)
return size
}