[swift] CollectionViewのセルの間隔やセルのサイズを変更 (cell margin)

CollectionViewのセルの間隔を変更

CollectionViewのセルの間隔を変更するには「insetForSectionAtIndex」でUIEdgeInsetsをreturnすれば良い

サンプルコード:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets {
        return UIEdgeInsetsMake(5, 10, 0, 7)
    }

上記設定で各セルの上5px、左10px、下0px、右7pxの余白を開けることができる

 

Swift4では以下の通りで、CollectionViewのセルの間隔やサイズを変更できる

let margin: CGFloat = 20.0


extension ViewController: UICollectionViewDelegateFlowLayout {
 
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
  // 例えば端末サイズを 3 列にする場合
  let width: CGFloat = UIScreen.main.bounds.width / 3 - margin*2
  let height = width
  return CGSize(width: width, height: height)
 }
 
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
  return UIEdgeInsets(top: margin, left: margin, bottom: margin, right: margin)
 }
 
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
  return margin
 }
 
 func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
  return margin
 }
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です