2016-05-22 6 views
0

Итак, я хочу, чтобы установить высоту UICollectionViewCell от cellForItemAtIndexPath, а не изКак установить высоту UICollectionViewCell из cellForItemAtIndexPath?

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 

Как я могу это сделать? Поэтому я хочу, чтобы дать высоту и ширину моих клеток в cellForItemAtIndexPath, а не в collectionViewLayout: sizeForItemAtIndexPath

ответ

2

Вы должны по-прежнему использовать sizeForItemAtIndexPath, но вы можете объявить публичную переменную в верхней части вашего быстрого файла:

var cellSize = CGSize() 

и в cellForRowAtIndexPath делегата написать что-то вроде этого раньше return cell:

cellSize = CGSizeMake(100, 100) // set your desired width and height 

затем:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    return cellSize 
} 
0

Один из способов обеспечить их оценить высоту с UICollectionViewFLowLayout

UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout*) self.CollectionViewLayout.collectionViewLayout; 
    flowLayout.estimatedItemSize = CGSizeMake(self.view.frame.size.width,yourheight); 

, но если все ячейки необходимо иметь разную высоту, то вам нужно реализовать sizeForItemAtIndexPath метод формы UICollecionViewController.

>  (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout 
> sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ 
>  return CGSizeMake(width, height); 
>  
>  } 
Смежные вопросы