Как спроектировать различную ячейку для сбора

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

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

Просмотр коллекции


person Makaille    schedule 19.12.2016    source источник
comment
сколько collectionviewcell вам требуется в вашем collectionview?   -  person Himanshu Moradiya    schedule 19.12.2016
comment
@HimanshuMoradiya Здравствуйте, у меня 6 разных сот. Но только 3 разных дизайна (заголовок, вид в масштабе изображения / 3 и вид в масштабе изображения / 2. Как изображение раскадровки   -  person Makaille    schedule 19.12.2016
comment
затем поместите условие в метод delagates collectionviewcelllayout и дайте ему кадр   -  person Himanshu Moradiya    schedule 19.12.2016


Ответы (2)


осуществлять

class MyViewController: UIViewController, UICollectionViewDataSource , UICollectionViewDelegate , UICollectionViewFlowLayout

in 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
    }
person dahiya_boy    schedule 19.12.2016

В соответствии с вашим требованием вы можете сделать так

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)
   }

}

Вывод:

поскольку им требуется 6 ячеек в представлении коллекции

person Himanshu Moradiya    schedule 19.12.2016
comment
Вы должны создать более общее решение, а не жестко кодировать числа, чтобы они соответствовали точным значениям. - person Rikh; 19.12.2016
comment
@Rikh, тогда скажи мне, каково общее решение этого вопроса. - person Himanshu Moradiya; 19.12.2016
comment
Хорошая работа, по крайней мере, вы пытаетесь помочь. - person Amrit Tiwari; 19.12.2016