FUIHorizontalScrollCollectionViewLayout

open class FUIHorizontalScrollCollectionViewLayout : UICollectionViewLayout

This layout should be used when the user should pan horizontally in the collection view, to view items off-screen to the left or right. Items in a section extend in a single row to infinity, so items will not wrap to new lines.

A developer should set the itemSize property of the layout, to specify the standard dimensions of the cell items.

Code usage

  1. Assign an instance of FUIHorizontalScrollCollectionViewLayout to your collection view.

    self.collectionView.collectionViewLayout = FUICollectionViewLayout.horizontalScroll
    
  2. Implement collectionView(_:cellForItemAt:) dataSource.

    public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: FUIObjectCollectionViewCell.reuseIdentifier, for: indexPath) as! FUIObjectCollectionViewCell  //You may use any type of collection view cell here.
    //configue cell here
    //...
    return cell
    }
    
  3. Implement following methods if you need section header/footer. You can also set headerReferenceHeight/footerReferenceHeight to apply same height for all headers/footers.

    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
    let view = collectionView.dequeueReusableSupplementaryView(ofKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "Header", for: indexPath) as! FUICollectionSectionHeaderFooterView
    //configue header/footer view here
    //...
    return view
    }
    

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { switch section { case 0: return CGSize(width: 40, height: 40) default: return CGSize(width: 60, height: 60) }

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForFooterInSection section: Int) -> CGSize { switch section { case 0: return CGSize(width: 40, height: 40) default: return CGSize(width: 60, height: 60) }

  • The default size(50*50) to use for cells.

    Declaration

    Swift

    open var itemSize: CGSize
  • The estimated size of cells in the collection view.

    Providing an estimated cell size can improve the performance of the collection view when the cells adjust their size dynamically. Specifying an estimate value lets the collection view defer some of the calculations needed to determine the actual size of its content. Specifically, cells that are not onscreen are assumed to be the estimated height.

    The default value of this property is CGSizeZero. Setting it to any other value causes the collection view to query each cell for its actual size using the cell’s preferredLayoutAttributesFitting(_:) method. If all of your cells are the same height, use the itemSize property, instead of this property, to specify the cell size instead.

    Declaration

    Swift

    open var estimatedItemSize: CGSize { get set }
  • The margins used to lay out content in a section.

    Declaration

    Swift

    open var sectionInset: UIEdgeInsets { get set }
  • The default size to use for section headers. Implementing collectionView(_:layout:referenceSizeForHeaderInSection:) will override this property.

    Declaration

    Swift

    open var headerReferenceSize: CGSize { get set }
  • The default size to use for section footers. Implementing collectionView(_:layout:referenceSizeForFooterInSection:) will override this property.

    Declaration

    Swift

    open var footerReferenceSize: CGSize { get set }
  • The minimum spacing to use between items in the same row.

    Declaration

    Swift

    open var minimumInteritemSpacing: CGFloat { get set }
  • The vertical alignment of cells in the collection view.

    Declaration

    Swift

    open var alignment: FUICollectionViewVerticalAlignment { get set }