HorizontalFLoatingHeaderLayout is a subclass of UICollectionViewLayout built with performance in mind. Born from the need for replicating UITableView's sticky headers behavior and iOS 8+ native Emoji keyboard.
For a vertical implementation, you can turn on sectionHeadersPinToVisibleBounds flag from UICollectionViewFlowLayout (available since iOS 9.0)
####Via CocoaPods:
pod "HorizontalFloatingHeaderLayout"####Manually:
- Clone this repo or download it as a .zip file
- Drag and drop HorizontalFloatingHeaderLayout.swift to your project
##Usage
####From Storyboard:
1. On your UICollectionView's inspector, change its layout to "Custom" and type HorizontalFloatingHeaderLayout on the class field
2. Import framework to your UIViewController subclass...
import HorizontalFloatingHeaderLayoutand make it conform protocol HorizontalFloatingHeaderLayoutDelegate
class YourViewController: UIViewController, HorizontalFloatingHeaderLayoutDelegate {3. Implement all the necessary delegate methods.
####Programatically:
1. Import framework to your UIViewController subclass
import HorizontalFloatingHeaderLayout2. Instantiate and add to your UICollectionView object
collectionView.collectionViewLayout = HorizontalFloatingHeaderLayout()3. Make your UIViewController subclass conform protocol HorizontalFloatingHeaderLayoutDelegate
class YourViewController: UIViewController, HorizontalFloatingHeaderLayoutDelegate {4. Implement all the necessary delegate methods.
##Delegate methods
//Item size
func collectionView(collectionView: UICollectionView,horizontalFloatingHeaderItemSizeForItemAtIndexPath indexPath:NSIndexPath) -> CGSizeReturns item size. Mandatory implementation.
//Header size
func collectionView(collectionView: UICollectionView, horizontalFloatingHeaderSizeForSectionAtIndex section: Int) -> CGSizeReturns section's header size. Mandatory implementation.
//Section Inset
optional func collectionView(collectionView: UICollectionView, horizontalFloatingHeaderSectionInsetForSectionAtIndex section: Int) -> UIEdgeInsetsReturns section's edge insets. Optional implementation. Default value is UIEdgeInsetsZero
//Item Spacing
optional func collectionView(collectionView: UICollectionView, horizontalFloatingHeaderItemSpacingForSectionAtIndex section: Int) -> CGFloatReturns point spacing between items on the same column. Optional implementation. Default value is 0.0.
//Line Spacing
optional func collectionView(collectionView: UICollectionView,horizontalFloatingHeaderColumnSpacingForSectionAtIndex section: Int) -> CGFloatReturns points spacing between columns. Optional implementation. Default value is 0.0.
##Requirements
- iOS 8.3
- Xcode 7.1 or later (Uses Swift 2.1 syntax)
Diego Cruz, diego.cruz@icloud.com
HorizontalFloatingHeaderLayout is available under the MIT license. See the LICENSE file for more info.


