/** * Copyright (c) 2016-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ #import NS_ASSUME_NONNULL_BEGIN /** Conform to this protocol to provide information about a list's supplementary views. This data is used in `IGListAdapter` which then configures and maintains a `UICollectionView`. The supplementary API reflects that in `UICollectionView`, `UICollectionViewLayout`, and `UICollectionViewDataSource`. */ @protocol IGListSupplementaryViewSource /** Asks the SupplementaryViewSource for an array of supported element kinds. @return An array of element kind strings that the supplementary source handles. */ - (NSArray *)supportedElementKinds; /** Asks the SupplementaryViewSource for a configured supplementary view for the specified kind and index. @param elementKind The kind of supplementary view being requested @param index The index for the supplementary veiw being requested. @note This is your opportunity to do any supplementary view setup and configuration. @warning You should never allocate new views in this method. Instead deque a view from the `IGListCollectionContext`. */ - (__kindof UICollectionReusableView *)viewForSupplementaryElementOfKind:(NSString *)elementKind atIndex:(NSInteger)index; /** Asks the SupplementaryViewSource for the size of a supplementary view for the given kind and index path. @param elementKind The kind of supplementary view. @param index The index of the requested view. @return The size for the supplementary view. */ - (CGSize)sizeForSupplementaryViewOfKind:(NSString *)elementKind atIndex:(NSInteger)index; @end NS_ASSUME_NONNULL_END