在Swift中调整UICollectionViewCell大小时出错

时间:2014-11-04 20:57:04

标签: ios swift uicollectionview

我正在尝试根据

中包含的标签文本的长度调整每个集合视图单元的大小
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
}

运行代码时,应用程序崩溃,错误为“流量布局不支持负值或零大小”。然而,当我介入时,我发现崩溃发生在初始化单元格变量,甚至在确定大小之前。为什么初始化我的单元格变量会抛出这种类型的错误?

1 个答案:

答案 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
}