2014-11-04 4 views
3

Я пытаюсь настроить размер каждого вида сбора клеток в зависимости от длины текста метки, содержащейся вОшибка калибровки UICollectionViewCell в Swift

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

Вы когда-нибудь находили решение? Иметь то же самое. :( – SeeMeCode

+0

@SeeMeCode Не уверен, что вам все еще нужно, но я разместил свое решение ниже. – barrt051

ответ

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 
} 
Смежные вопросы