2016-12-19 2 views
2

У меня есть collectionView с разными collectionCell, и я хочу установить масштаб/высоту/размер в зависимости от ячейки. Как мне это сделать ?Как создать различную коллекционную ячейку

Вот изображение моей другой ячейки: a title cell и 2 разных cell image. Один из них - ширина представления/3, а другой -/2. Я не могу сделать это с автоматическим ограничением макета в доске объявлений, поэтому мне нужно сделать это в коде. Я пытаюсь использовать collectionViewLayout.

CollectionView

+0

сколько collectionviewcell вам требуется в вашем CollectionView? –

+0

@ ХиманшуМорадия Привет, у меня 6 разных клеток. Но только 3 разных дизайна (название, масштаб изображения/3 и вид масштабирования изображения/2. Как и изображение раскадровки – Makaille

+0

, затем установите условие в метод коллекции collectviewcelllayout delagates и дайте фрейм его –

ответ

1

реализации

class MyViewController: UIViewController, UICollectionViewDataSource , UICollectionViewDelegate , UICollectionViewFlowLayout

в ViewDidLoad

collectionView.delegate = self; 
collectionView.datasource = self; 

надстройки делегата макет поток

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    if indexPath.row == 0 || indexPath.row == 1 || indexPath.row == 2{ 
     return CGSize(self.view.frame.size.width/3, 100) 
    } 

    else{ 
     return CGSize(self.view.frame.size.width/2, 100) 
    } 
// return the size you what 
    } 
0

По вашему требованию вы можете сделать, как таким образом

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize { 
    if (indexPath.row >= 0 && indexPath.row < 3) { 
     return CGSize(width: self.view.frame.size.width/3.15, height: 150) 
     // here give size for 3 collectionviewcell in one row . i use 3.5 beacause of i put spacing 10 pix left and right side of collectionview. 
    } 
    else if (indexPath.row >=3 && indexPath.row < 5){ 
     return CGSize(width: self.view.frame.size.width/2.20, height: 150) 
     // here give size for 2 collectionviewcell in one row. 
    }else{ 
     return CGSize(width: self.view.frame.size.width/3.15, height: 150) 
    } 

} 

Выход:

as they requirement 6 cell in collectionview

+1

Вам следует создать более общее решение, а не жесткое кодирование чисел чтобы соответствовать точным значениям. – Rikh

+0

@Rikh, тогда скажите мне, какое общее решение для этого вопроса. –

+0

Хорошая работа, по крайней мере, вы пытаетесь помочь. –

Смежные вопросы