質問: ``` func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { return UIEdgeInsetsMake(0, 0, 0, 0) } ``` 上記のメソッドを使ってif文で分けたいです。 例えばHogeCell、HugaCell2つのセルをcollectionView?.registerしていて、 HogeCellはUIEdgeInsetsMakeを適用して、HugaCellは適用しない、 という形で分けたいです。 if文が載っているドキュメントが見つからないため、質問させて頂きます。 よろしくお願いします。 //画像を追記しました ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/72e2c89d07d20324b57458c3faa288fa.png) greenのセル、オレンジのセル(両方heightは200)と、 オレンジのセルの上に乗ったUIView、 その上にcollectionView、 その上にセルのパープル(heightは100)があります。 オレンジのセルだけreturn UIEdgeInsetsMake(100, 0, 0, 0)を使ってずらして、 オレンジのセルのheight200全て見える様に突き出させたいです。 UIViewなどのパープルのbottomに丁度topを配置するイメージです。 ですが、オレンジセルにパープルが乗る形なので、一緒にずれてしまっています。 パープルを動かさずに、そのままの位置においておきたいです。 もしこれを実現したい場合は、 もう1つ別のseutionを増やして、 パープルのボトムにそのsectionのtopを配置することになるのでしょうか?
回答: 上記のメソッドを使用したいのであれば、各セルをセクションで分ける必要があると思います。 ``` override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { // セクションで分ける switch indexPath.section { case 1: return collectionView.dequeueReusableCell(withReuseIdentifier: "cellId", for: indexPath) as! HogeCell default: return collectionView.dequeueReusableCell(withReuseIdentifier: "cellId2", for: indexPath) as! HugaCell } } override func numberOfSections(in collectionView: UICollectionView) -> Int { return 2 } override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return 1 } func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { // セクションで分ける switch section { case 1: return UIEdgeInsetsMake(0, 0, 0, 0) default: return UIEdgeInsetsMake(50, 50, 50, 50) } } ``` 参考サイト