Adds abstract ASLayoutController implementation in preparation for custom layout ASLayoutController implementation.

This commit is contained in:
Rene Cacheaux
2015-06-21 13:24:24 -05:00
parent 33118df73b
commit 0adac6851a
5 changed files with 127 additions and 58 deletions

View File

@@ -24,8 +24,6 @@ static const CGFloat kASFlowLayoutControllerRefreshingThreshold = 0.3;
std::vector<std::pair<int, int>> _rangeStartPos;
std::vector<std::pair<int, int>> _rangeEndPos;
std::vector<ASRangeTuningParameters> _tuningParameters;
}
@end
@@ -39,45 +37,9 @@ static const CGFloat kASFlowLayoutControllerRefreshingThreshold = 0.3;
_layoutDirection = layoutDirection;
_tuningParameters = std::vector<ASRangeTuningParameters>(ASLayoutRangeTypeCount);
_tuningParameters[ASLayoutRangeTypePreload] = {
.leadingBufferScreenfuls = 2,
.trailingBufferScreenfuls = 1
};
_tuningParameters[ASLayoutRangeTypeRender] = {
.leadingBufferScreenfuls = 3,
.trailingBufferScreenfuls = 2
};
return self;
}
#pragma mark - Tuning Parameters
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
{
ASDisplayNodeAssert(rangeType < _tuningParameters.size(), @"Requesting a range that is OOB for the configured tuning parameters");
return _tuningParameters[rangeType];
}
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
{
ASDisplayNodeAssert(rangeType < _tuningParameters.size(), @"Requesting a range that is OOB for the configured tuning parameters");
_tuningParameters[rangeType] = tuningParameters;
}
// Support for the deprecated tuningParameters property
- (ASRangeTuningParameters)tuningParameters
{
return [self tuningParametersForRangeType:ASLayoutRangeTypeRender];
}
// Support for the deprecated tuningParameters property
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters
{
[self setTuningParameters:tuningParameters forRangeType:ASLayoutRangeTypeRender];
}
#pragma mark - Editing
- (void)insertNodesAtIndexPaths:(NSArray *)indexPaths withSizes:(NSArray *)nodeSizes
@@ -147,12 +109,6 @@ static const CGFloat kASFlowLayoutControllerRefreshingThreshold = 0.3;
ASFlowLayoutDistance(endPos, _visibleRangeEndPos, _nodeSizes) > ASFlowLayoutDistance(_visibleRangeEndPos, rangeEndPos, _nodeSizes) * kASFlowLayoutControllerRefreshingThreshold;
}
- (BOOL)shouldUpdateForVisibleIndexPath:(NSArray *)indexPaths
viewportSize:(CGSize)viewportSize
{
return [self shouldUpdateForVisibleIndexPaths:indexPaths viewportSize:viewportSize rangeType:ASLayoutRangeTypeRender];
}
- (void)setVisibleNodeIndexPaths:(NSArray *)indexPaths
{
ASFindIndexPathRange(indexPaths, _visibleRangeStartPos, _visibleRangeEndPos);
@@ -203,12 +159,6 @@ static const CGFloat kASFlowLayoutControllerRefreshingThreshold = 0.3;
return indexPathSet;
}
- (NSSet *)indexPathsForScrolling:(ASScrollDirection)scrollDirection
viewportSize:(CGSize)viewportSize
{
return [self indexPathsForScrolling:scrollDirection viewportSize:viewportSize rangeType:ASLayoutRangeTypeRender];
}
#pragma mark - Utility
static void ASFindIndexPathRange(NSArray *indexPaths, std::pair<int, int> &startPos, std::pair<int, int> &endPos)