Code Quality Rank: L5
Programming language: Swift
License: MIT License
Latest version: v2.0.4

FlexibleCollectionViewController alternatives and similar libraries

Based on the "Table View / Collection View" category.
Alternatively, view FlexibleCollectionViewController alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of FlexibleCollectionViewController or a related project?

Add another 'Table View / Collection View' Library



Language Version License Platform

Swift library of generic collection view controller with external data processing of functionality, like determine cell's reuseIdentifier related to indexPath, configuration of requested cell for display and cell selection handler etc


Initialisation with configuration

_flexibleCollectionVC = FlexibleCollectionViewController(collectionViewLayout: CustomFlowLayout(), configuration: CollectionConfiguration(userInteractionEnabled: true, showsHorizontalScrollIndicator: false, isScrollEnabled: true, multipleTouchEnabled: false, backgroundColor: .clear))

Cell and supplementary view registering

_flexibleCollectionVC.register(UICollectionViewCell.self, forCellWithReuseIdentifier: "UICollectionViewCell")
_flexibleCollectionVC.registerSupplementaryView(UIHeaderImageCollectionView.self, kind: .header, reuseIdentifier: UIHeaderImageCollectionView.reuseIdentifier)

Requesting indentifier of cell for specific indexPath

_flexibleCollectionVC.requestCellIdentifier = { value in
  return "UICollectionViewCell"

Requesting indentifier of supplementary view for specific indexPath

_flexibleCollectionVC.requestSupplementaryIdentifier = { value in
  return UIHeaderImageCollectionView.reuseIdentifier

Configuration of input cell with related data to indexPath

_flexibleCollectionVC.configureCell = { (cell: UICollectionViewCell, data: CollectionImageCellData?, indexPath: IndexPath) in
  guard let data = data else {
    return false

  cell.backgroundColor = data.color

  return true

Configuration of supplementary view with related kind and data to indexPath

_flexibleCollectionVC.configureSupplementary = { (view: UICollectionReusableView, kind: SupplementaryKind, data: CollectionImageCellData?, indexPath: IndexPath) in
  if let view = view as? UIHeaderImageCollectionView, let data = data {
    view.text = data.category

    return true

  return false

Process cell selection to related indexPath

_flexibleCollectionVC.cellDidSelect = { value in
  return (deselect: true, animate: true)

Estimate cell size

_flexibleCollectionVC.estimateCellSize = { value in
  guard let layout = value.1 as? UICollectionViewFlowLayout else {
    return nil

  let col: CGFloat = 3
  let width = value.0.bounds.width-(layout.sectionInset.left+layout.sectionInset.right)
  let side = round(width/col)-layout.minimumInteritemSpacing
  return CGSize(width: side, height: side)

Put predefined cells in generated order related to ListGenerator



Swift 3 or above


FlexibleCollectionViewController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "FlexibleCollectionViewController"


Pilipenko Dima, [email protected]


FlexibleCollectionViewController is available under the MIT license. See the LICENSE file for more info.

*Note that all licence references and agreements mentioned in the FlexibleCollectionViewController README section above are relevant to that project's source code only.