initial design

This commit is contained in:
Bin Liu
2016-01-14 15:46:20 -08:00
parent 3aceabbbf9
commit da2cbf4644
3 changed files with 36 additions and 0 deletions

View File

@@ -13,6 +13,7 @@
#import <AsyncDisplayKit/ASBaseDefines.h>
#import <AsyncDisplayKit/ASBatchContext.h>
#import <AsyncDisplayKit/ASCollectionViewFlowLayoutInspector.h>
#import <AsyncDisplayKit/ASCollectionViewLayoutFacilitatorProtocol.h>
@class ASCellNode;
@class ASCollectionNode;
@@ -43,6 +44,7 @@ NS_ASSUME_NONNULL_BEGIN
*/
- (instancetype)initWithCollectionViewLayout:(UICollectionViewLayout *)layout;
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout;
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout layoutFacilitator:(id<ASCollectionViewLayoutFacilitatorProtocol>)layoutFacilitator;
// The corresponding ASCollectionNode, which exists even if directly allocating & handling the view class.
@property (nonatomic, weak, readonly) ASCollectionNode *collectionNode;

View File

@@ -20,6 +20,8 @@
#import "UICollectionViewLayout+ASConvenience.h"
#import "_ASDisplayLayer.h"
#import "ASCollectionViewLayoutFacilitatorProtocol.h"
static const NSUInteger kASCollectionViewAnimationNone = UITableViewRowAnimationNone;
static const ASSizeRange kInvalidSizeRange = {CGSizeZero, CGSizeZero};
static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
@@ -68,6 +70,8 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
ASCollectionViewLayoutController *_layoutController;
ASCollectionViewFlowLayoutInspector *_flowLayoutInspector;
id<ASCollectionViewLayoutFacilitatorProtocol> _layoutFacilitator;
BOOL _performingBatchUpdates;
NSMutableArray *_batchUpdateBlocks;
@@ -137,6 +141,13 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
return [self _initWithFrame:frame collectionViewLayout:layout ownedByNode:NO];
}
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout layoutFacilitator:(id<ASCollectionViewLayoutFacilitatorProtocol>)layoutFacilitator
{
self = [self _initWithFrame:frame collectionViewLayout:layout ownedByNode:NO];
_layoutFacilitator = layoutFacilitator;
return self;
}
// FIXME: This method is deprecated and will probably be removed in or shortly after 2.0.
- (instancetype)initWithFrame:(CGRect)frame collectionViewLayout:(UICollectionViewLayout *)layout asyncDataFetching:(BOOL)asyncDataFetchingEnabled
{
@@ -412,12 +423,14 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
- (void)insertSections:(NSIndexSet *)sections
{
ASDisplayNodeAssertMainThread();
[_layoutFacilitator collectionViewInsertingSectionsAtIndexSet:sections];
[_dataController insertSections:sections withAnimationOptions:kASCollectionViewAnimationNone];
}
- (void)deleteSections:(NSIndexSet *)sections
{
ASDisplayNodeAssertMainThread();
[_layoutFacilitator collectionViewDeletingSectionsAtIndexSet:sections];
[_dataController deleteSections:sections withAnimationOptions:kASCollectionViewAnimationNone];
}
@@ -436,6 +449,7 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
- (void)insertItemsAtIndexPaths:(NSArray *)indexPaths
{
ASDisplayNodeAssertMainThread();
[_layoutFacilitator collectionViewInsertingCellAtIndexPaths:indexPaths];
[_dataController insertRowsAtIndexPaths:indexPaths withAnimationOptions:kASCollectionViewAnimationNone];
}

View File

@@ -0,0 +1,20 @@
//
// ASCollectionViewLayoutFacilitatorProtocol.h
// Pods
//
// Created by Bin Liu on 1/13/16.
//
//
#ifndef ASCollectionViewLayoutFacilitatorProtocol_h
#define ASCollectionViewLayoutFacilitatorProtocol_h
@protocol ASCollectionViewLayoutFacilitatorProtocol <NSObject>
- (void)collectionViewInsertingCellAtIndexPaths:(NSArray *)indexPaths;
- (void)collectionViewInsertingSectionsAtIndexSet:(NSIndexSet *)indexes;
- (void)collectionViewDeletingSectionsAtIndexSet:(NSIndexSet *)indexes;
@end
#endif /* ASCollectionViewLayoutFacilitatorProtocol_h */