forked from facebookarchive/AsyncDisplayKit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathASPagerNode.h
More file actions
121 lines (97 loc) · 3.53 KB
/
ASPagerNode.h
File metadata and controls
121 lines (97 loc) · 3.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
//
// ASPagerNode.h
// AsyncDisplayKit
//
// Created by Levi McCallum on 12/7/15.
//
// Copyright (c) 2014-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 <AsyncDisplayKit/ASCollectionNode.h>
#import <AsyncDisplayKit/ASDataController.h>
@class ASPagerNode;
@class ASPagerFlowLayout;
NS_ASSUME_NONNULL_BEGIN
#define ASPagerNodeDataSource ASPagerDataSource
@protocol ASPagerDataSource <NSObject>
/**
* This method replaces -collectionView:numberOfItemsInSection:
*
* @param pagerNode The sender.
* @return The total number of pages that can display in the pagerNode.
*/
- (NSInteger)numberOfPagesInPagerNode:(ASPagerNode *)pagerNode;
@optional
/**
* This method replaces -collectionView:nodeForItemAtIndexPath:
*
* @param pagerNode The sender.
* @param index The index of the requested node.
* @return a node for display at this index. This will be called on the main thread and should
* not implement reuse (it will be called once per row). Unlike UICollectionView's version,
* this method is not called when the row is about to display.
*/
- (ASCellNode *)pagerNode:(ASPagerNode *)pagerNode nodeAtIndex:(NSInteger)index;
/**
* This method replaces -collectionView:nodeBlockForItemAtIndexPath:
* This method takes precedence over pagerNode:nodeAtIndex: if implemented.
*
* @param pagerNode The sender.
* @param index The index of the requested node.
* @return a block that creates the node for display at this index.
* Must be thread-safe (can be called on the main thread or a background
* queue) and should not implement reuse (it will be called once per row).
*/
- (ASCellNodeBlock)pagerNode:(ASPagerNode *)pagerNode nodeBlockAtIndex:(NSInteger)index;
@end
@protocol ASPagerDelegate <ASCollectionDelegate>
@optional
/**
* Provides the constrained size range for measuring the node at the index.
*
* @param pagerNode The sender.
* @param index The index of the node.
* @return A constrained size range for layout the node at this index.
*/
- (ASSizeRange)pagerNode:(ASPagerNode *)pagerNode constrainedSizeForNodeAtIndex:(NSInteger)index;
@end
@interface ASPagerNode : ASCollectionNode
/**
* Configures a default horizontal, paging flow layout with 0 inter-item spacing.
*/
- (instancetype)init;
/**
* Initializer with custom-configured flow layout properties.
*/
- (instancetype)initWithCollectionViewLayout:(ASPagerFlowLayout *)flowLayout;
/**
* Data Source is required, and uses a different protocol from ASCollectionNode.
*/
- (void)setDataSource:(nullable id <ASPagerDataSource>)dataSource;
- (nullable id <ASPagerDataSource>)dataSource;
/**
* Delegate is optional.
* This includes UIScrollViewDelegate as well as most methods from UICollectionViewDelegate, like willDisplay...
*/
- (void)setDelegate:(nullable id <ASPagerDelegate>)delegate;
- (nullable id <ASPagerDelegate>)delegate;
/**
* The underlying ASCollectionView object.
*/
@property (nonatomic, readonly) ASCollectionView *view;
/**
* Returns the current page index
*/
@property (nonatomic, assign, readonly) NSInteger currentPageIndex;
/**
* Scroll the contents of the receiver to ensure that the page is visible
*/
- (void)scrollToPageAtIndex:(NSInteger)index animated:(BOOL)animated;
/**
* Returns the node for the passed page index
*/
- (ASCellNode *)nodeForPageAtIndex:(NSInteger)index;
@end
NS_ASSUME_NONNULL_END