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.
- 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.
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
Add the following to your Podfile
pod 'CollectionViewShelfLayout'
use_frameworks!
Add the following to your Cartfile
github "pitiphong-p/CollectionViewShelfLayout"
You can use CollectionViewShelfLayout in Swift 2.2 by checking out tag 0.5.5
You can use CollectionViewShelfLayout in Swift 4.0 by checking out tag 0.6.4
You can use CollectionViewShelfLayout in Swift 4.0 by checking out tag 0.6.5
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
CollectionViewShelfLayout
project comes with a demo app target. You can see CollectionViewShelfLayout
in action by just running AppStoreCollectionViewLayout-Demo
demo app target.
Pitiphong Phongpattranont
- [@pitiphong_p on Twitter] (https://twitter.com/pitiphong_p)
CollectionViewShelfLayout
is released under an MIT License.
Copyright © 2016-present Pitiphong Phongpattranont.