Latest 2.0.4
Homepage https://github.com/dimpiax/FlexibleCollectionViewController
License MIT
Platforms ios 8.0, requires ARC
Authors

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

Example

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

_flexibleCollectionVC.setData(getData())

Requirements

Swift 3 or above

Installation

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

pod "FlexibleCollectionViewController"

Author

Pilipenko Dima, [email protected]

License

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

Latest podspec

{
    "name": "FlexibleCollectionViewController",
    "version": "2.0.4",
    "summary": "Generic collection view controller with external data processing",
    "description": "Swift library of generic collection view controller with external data processing of functionality,nlike determine cell's `reuseIdentifier` related to `indexPath`,nconfiguration of requested cell for display and cell selection handler etc",
    "homepage": "https://github.com/dimpiax/FlexibleCollectionViewController",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Pilipenko Dima": "[email protected]"
    },
    "source": {
        "git": "https://github.com/dimpiax/FlexibleCollectionViewController.git",
        "tag": "2.0.4"
    },
    "social_media_url": "https://twitter.com/dimpiax",
    "platforms": {
        "ios": "8.0"
    },
    "requires_arc": true,
    "source_files": "FlexibleCollectionViewController/Classes/**/*",
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This