A UICollectionViewLayout subclass displays its items as rows of items similar to the App Store Feature tab without a nested UITableView/UICollectionView hack.
Clone or download
pitiphong-p Fixed: Bad instruction on indexPath.section (#9)
* Fixed: Bad instruction on indexPath.section

* Update framework version number to 0.6.4
Latest commit 8df8f34 Jul 1, 2018

README.md

CollectionViewShelfLayout

A UICollectionViewLayout subclass displays its items as rows of items similar to the App Store Feature tab without a nested UITableView/UICollectionView hack. You can use a single data source for all of your contents. Each section displays its items in a row. CollectionViewShelfLayout supports collection view's header view and footer view similar to table view's tableHeaderView and tableFooterView also sections' header and footer views too.

CollectionViewShelfLayout screenshot

Requirements

  • iOS 9+
  • Swift 4.0+

This requirement is due to usage of some Auto Layout APIs available in iOS 8 and 9 or later. If you want to use CollectionViewShelfLayout in iOS 8, you can replace NSLayoutAnchor usage with other APIs.

Installation

Manaully

This project comes with built in CollectionViewShelfLayout framework target. You can drag CollectionViewShelfLayout.xcproj file into your project, add CollectionViewShelfLayout framework target as a target dependency and link/embed that framework. and Voila!!!

import CollectionViewShelfLayout

CocoaPods

Add the following to your Podfile

pod 'CollectionViewShelfLayout'
use_frameworks!

Carthage

Add the following to your Cartfile

github "pitiphong-p/CollectionViewShelfLayout"

Swift 2

You can use CollectionViewShelfLayout in Swift 2.2 by checking out tag 0.5.5

Swift 4.2

You can use CollectionViewShelfLayout in Swift 4.2 (which is currently in Beta) by checking out branch swift-4.2

Usage

Set collecion view's layout to an instance of CollectionViewShelfLayout. Set the layout's properties you want (eg. cellSize). You can set its layout both via code or Storyboard.

let shelfLayout = CollectionViewShelfLayout()
shelfLayout.itemSize = CGSize(width: 100, height: 180)
collectionView.collectionViewLayout = shelfLayout

Demo App

CollectionViewShelfLayout project comes with a demo app target. You can see CollectionViewShelfLayout in action by just running AppStoreCollectionViewLayout-Demo demo app target.

Contact

Pitiphong Phongpattranont

License

CollectionViewShelfLayout is released under an MIT License.
Copyright © 2016-present Pitiphong Phongpattranont.