123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // PSTCollectionViewFlowLayout.h
- // PSPDFKit
- //
- // Copyright (c) 2012-2013 Peter Steinberger. All rights reserved.
- //
- #import "PSTCollectionViewLayout.h"
- extern NSString *const PSTCollectionElementKindSectionHeader;
- extern NSString *const PSTCollectionElementKindSectionFooter;
- typedef NS_ENUM(NSInteger, PSTCollectionViewScrollDirection) {
- PSTCollectionViewScrollDirectionVertical,
- PSTCollectionViewScrollDirectionHorizontal
- };
- @protocol PSTCollectionViewDelegateFlowLayout <PSTCollectionViewDelegate>
- @optional
- - (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
- - (UIEdgeInsets)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section;
- - (CGFloat)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section;
- - (CGFloat)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section;
- - (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section;
- - (CGSize)collectionView:(PSTCollectionView *)collectionView layout:(PSTCollectionViewLayout*)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section;
- @end
- @class PSTGridLayoutInfo;
- @interface PSTCollectionViewFlowLayout : PSTCollectionViewLayout
- @property (nonatomic) CGFloat minimumLineSpacing;
- @property (nonatomic) CGFloat minimumInteritemSpacing;
- @property (nonatomic) CGSize itemSize; // for the cases the delegate method is not implemented
- @property (nonatomic) PSTCollectionViewScrollDirection scrollDirection; // default is PSTCollectionViewScrollDirectionVertical
- @property (nonatomic) CGSize headerReferenceSize;
- @property (nonatomic) CGSize footerReferenceSize;
- @property (nonatomic) UIEdgeInsets sectionInset;
- /*
- Row alignment options exits in the official UICollectionView, but hasn't been made public API.
- Here's a snippet to test this on UICollectionView:
- NSMutableDictionary *rowAlign = [[flowLayout valueForKey:@"_rowAlignmentsOptionsDictionary"] mutableCopy];
- rowAlign[@"UIFlowLayoutCommonRowHorizontalAlignmentKey"] = @(1);
- rowAlign[@"UIFlowLayoutLastRowHorizontalAlignmentKey"] = @(3);
- [flowLayout setValue:rowAlign forKey:@"_rowAlignmentsOptionsDictionary"];
- */
- @property (nonatomic, strong) NSDictionary *rowAlignmentOptions;
- @end
- // @steipete addition, private API in UICollectionViewFlowLayout
- extern NSString *const PSTFlowLayoutCommonRowHorizontalAlignmentKey;
- extern NSString *const PSTFlowLayoutLastRowHorizontalAlignmentKey;
- extern NSString *const PSTFlowLayoutRowVerticalAlignmentKey;
- typedef NS_ENUM(NSInteger, PSTFlowLayoutHorizontalAlignment) {
- PSTFlowLayoutHorizontalAlignmentLeft,
- PSTFlowLayoutHorizontalAlignmentCentered,
- PSTFlowLayoutHorizontalAlignmentRight,
- PSTFlowLayoutHorizontalAlignmentJustify // 3; default except for the last row
- };
- // TODO: settings for UIFlowLayoutRowVerticalAlignmentKey
- /*
- @interface PSTCollectionViewFlowLayout (Private)
- - (CGSize)synchronizeLayout;
- // For items being inserted or deleted, the collection view calls some different methods, which you should override to provide the appropriate layout information.
- - (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForFooterInInsertedSection:(NSInteger)section;
- - (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForHeaderInInsertedSection:(NSInteger)section;
- - (PSTCollectionViewLayoutAttributes *)initialLayoutAttributesForInsertedItemAtIndexPath:(NSIndexPath *)indexPath;
- - (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForFooterInDeletedSection:(NSInteger)section;
- - (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForHeaderInDeletedSection:(NSInteger)section;
- - (PSTCollectionViewLayoutAttributes *)finalLayoutAttributesForDeletedItemAtIndexPath:(NSIndexPath *)indexPath;
- - (void)_updateItemsLayout;
- - (void)_getSizingInfos;
- - (void)_updateDelegateFlags;
- - (PSTCollectionViewLayoutAttributes *)layoutAttributesForFooterInSection:(NSInteger)section;
- - (PSTCollectionViewLayoutAttributes *)layoutAttributesForHeaderInSection:(NSInteger)section;
- - (PSTCollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath usingData:(id)data;
- - (PSTCollectionViewLayoutAttributes *)layoutAttributesForFooterInSection:(NSInteger)section usingData:(id)data;
- - (PSTCollectionViewLayoutAttributes *)layoutAttributesForHeaderInSection:(NSInteger)section usingData:(id)data;
- - (id)indexesForSectionFootersInRect:(CGRect)rect;
- - (id)indexesForSectionHeadersInRect:(CGRect)rect;
- - (id)indexPathsForItemsInRect:(CGRect)rect usingData:(id)arg2;
- - (id)indexesForSectionFootersInRect:(CGRect)rect usingData:(id)arg2;
- - (id)indexesForSectionHeadersInRect:(CGRect)arg1 usingData:(id)arg2;
- - (CGRect)_frameForItemAtSection:(int)arg1 andRow:(int)arg2 usingData:(id)arg3;
- - (CGRect)_frameForFooterInSection:(int)arg1 usingData:(id)arg2;
- - (CGRect)_frameForHeaderInSection:(int)arg1 usingData:(id)arg2;
- - (void)_invalidateLayout;
- - (NSIndexPath *)indexPathForItemAtPoint:(CGPoint)arg1;
- - (PSTCollectionViewLayoutAttributes *)_layoutAttributesForItemsInRect:(CGRect)arg1;
- - (CGSize)collectionViewContentSize;
- - (void)finalizeCollectionViewUpdates;
- - (void)_invalidateButKeepDelegateInfo;
- - (void)_invalidateButKeepAllInfo;
- - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)arg1;
- - (id)layoutAttributesForElementsInRect:(CGRect)arg1;
- - (void)invalidateLayout;
- - (id)layoutAttributesForItemAtIndexPath:(id)arg1;
- @end
- */
|