Показать 3 изображения в первом ряду и 3 изображения во втором ряду при просмотре коллекции - PullRequest
0 голосов
/ 08 мая 2019

Я перетащил коллекционное представление на свой xib, установил ограничения как ведущий, трейлинг, вершина и высота.

Кодирующая часть задается как ...

 override func viewDidLoad() {
    super.viewDidLoad()
           let layout = UICollectionViewFlowLayout()
    layout.minimumLineSpacing = 5
    layout.minimumInteritemSpacing = 5

    collectionview2.delegate = self
    collectionview2.dataSource = self
    collectionview2.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "ident")

    }
  }


  func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
      return 5
    }


func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
 switch indexPath.item {
      case 0,1:
        return CGSize(width: (UIScreen.main.bounds.width - 16) / 2, height: (UIScreen.main.bounds.width - 16) / 2)
      default:
        return CGSize(width: (UIScreen.main.bounds.width - 32) / 3, height:  (UIScreen.main.bounds.width) / 3)
      }
}



func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ident", for: indexPath)
      cell.backgroundColor = .red
      return cell

}

Это ссылка, которую я указывал.Но это не работает, и я вижу только 5 одинаковых ячеек ширины и высоты одна за другой.

Что я делаю не так ...?

РЕДАКТИРОВАТЬ 1: Я также хотел бы показать одну длинную ячейку слева и две маленькие ячейки справа, вот так ...

Какие изменения я внесу в свой ответ, чтобы достичь этого ...?enter image description here

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Ваш код выглядит идеально, но вы можете забыть подтвердить протокол FlowLayout. так, вам просто нужно подтвердить приведенный ниже протокол в вашем коде,

UICollectionViewDelegateFlowLayout

Надеюсь, что этот путь поможет вам.

0 голосов
/ 08 мая 2019

Вы должны попробовать это

Подтвердите UICollectionViewDelegateFlowLayout

, например

class yourViewController: UIViewController,UICollectionViewDelegateFlowLayout
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        let screeSize = UIScreen.main.bounds
        let numOfCell:Int = 3 //Number of items you want
        let spaceOfCell:CGFloat = (CGFloat((numOfCell + 1)*10)) //Space between Cells

        return CGSize(width: Int(screeSize.width - spaceOfCell) / numOfCell, height: Int(screeSize.width - spaceOfCell) / numOfCell)

    }

    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
        return 10.00
        //Verticle space between line
    }

   func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
        return 10.00 //Space Between Items You want
    }

Надеюсь, это поможет:)

...