Error al dimensionar UICollectionViewCell en Swift

Estoy intentando ajustar el tamaño de cada celda de vista de colección de acuerdo con la longitud del text de la label contenida en

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 } 

Cuando se ejecuta el código, la aplicación se bloquea con el error 'negativo o no se admiten tamaños en el layout de flujo'. Sin embargo, cuando pisé el paso, descubrí que el locking ocurre al inicializar la variable de celda, antes de que el tamaño se determine. ¿Por qué inicializar la variable de mi celda arrojar este tipo de error?

Encontré mi problema Estaba usando collectionView.dequeueReusableCellWithReuseIdentifier () cuando en realidad esto solo debería usarse con el método delegate "cellForItemAtIndexPath". Lo que funcionó para mí fue el siguiente código:

 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 }