Cell spacing in UICollectionView

后端 未结 26 3711
旧巷少年郎
旧巷少年郎 2020-11-22 15:53

How do I set cell spacing in a section of UICollectionView? I know there is a property minimumInteritemSpacing I have set it to 5.0 still the spaci

26条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-22 16:28

    Answer for Swift 3.0, Xcode 8

    1.Make sure you set collection view delegate

    class DashboardViewController: UIViewController {
        @IBOutlet weak var dashboardCollectionView: UICollectionView!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            dashboardCollectionView.delegate = self
        }
    }
    

    2.Implement UICollectionViewDelegateFlowLayout protocol, not UICollectionViewDelegate.

    extension DashboardViewController: UICollectionViewDelegateFlowLayout {
        fileprivate var sectionInsets: UIEdgeInsets {
            return .zero
        }
    
        fileprivate var itemsPerRow: CGFloat {
            return 2
        }
    
        fileprivate var interitemSpace: CGFloat {
            return 5.0
        }
    
        func collectionView(_ collectionView: UICollectionView,
                            layout collectionViewLayout: UICollectionViewLayout,
                            sizeForItemAt indexPath: IndexPath) -> CGSize {
            let sectionPadding = sectionInsets.left * (itemsPerRow + 1)
            let interitemPadding = max(0.0, itemsPerRow - 1) * interitemSpace
            let availableWidth = collectionView.bounds.width - sectionPadding - interitemPadding
            let widthPerItem = availableWidth / itemsPerRow
    
            return CGSize(width: widthPerItem, height: widthPerItem)
        }
    
        func collectionView(_ collectionView: UICollectionView,
                            layout collectionViewLayout: UICollectionViewLayout,
                            insetForSectionAt section: Int) -> UIEdgeInsets {
            return sectionInsets
        }
    
        func collectionView(_ collectionView: UICollectionView,
                            layout collectionViewLayout: UICollectionViewLayout,
                            minimumLineSpacingForSectionAt section: Int) -> CGFloat {
            return 0.0
        }
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
            return interitemSpace
        }
    }
    

提交回复
热议问题