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