mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-22 14:20:20 +00:00
Add rangeMode APIs
This commit is contained in:
@@ -27,25 +27,53 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, readonly) ASCollectionView *view;
|
||||
|
||||
/**
|
||||
* Tuning parameters for a range type.
|
||||
* Tuning parameters for a range type in full mode.
|
||||
*
|
||||
* @param rangeType The range type to get the tuning parameters for.
|
||||
*
|
||||
* @returns A tuning parameter value for the given range type.
|
||||
* @returns A tuning parameter value for the given range type in full mode.
|
||||
*
|
||||
* Defaults to the render range having one sceenful both leading and trailing and the preload range having two
|
||||
* screenfuls in both directions.
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Set the tuning parameters for a range type.
|
||||
* Set the tuning parameters for a range type in full mode.
|
||||
*
|
||||
* @param tuningParameters The tuning parameters to store for a range type.
|
||||
* @param rangeType The range type to set the tuning parameters for.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Tuning parameters for a range type in the specified mode.
|
||||
*
|
||||
* @param rangeMode The range mode to get the runing parameters for.
|
||||
* @param rangeType The range type to get the tuning parameters for.
|
||||
*
|
||||
* @returns A tuning parameter value for the given range type in the given mode.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Set the tuning parameters for a range type in the specigied mode.
|
||||
*
|
||||
* @param tuningParameters The tuning parameters to store for a range type.
|
||||
* @param rangeMode The range mode to set the runing parameters for.
|
||||
* @param rangeType The range type to set the tuning parameters for.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Reload everything from scratch, destroying the working range and all cached nodes.
|
||||
*
|
||||
|
||||
@@ -201,12 +201,22 @@
|
||||
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [self.view.rangeController tuningParametersForRangeType:rangeType];
|
||||
return [self.view.rangeController tuningParametersForRangeMode:ASLayoutRangeModeFull rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [self.view.rangeController setTuningParameters:tuningParameters forRangeType:rangeType];
|
||||
[self.view.rangeController setTuningParameters:tuningParameters forRangeMode:ASLayoutRangeModeFull rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [self.view.rangeController tuningParametersForRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [self.view.rangeController setTuningParameters:tuningParameters forRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (void)reloadDataWithCompletion:(void (^)())completion
|
||||
|
||||
@@ -52,25 +52,53 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, weak) id<ASCollectionDataSource> asyncDataSource;
|
||||
|
||||
/**
|
||||
* Tuning parameters for a range type.
|
||||
* Tuning parameters for a range type in full mode.
|
||||
*
|
||||
* @param rangeType The range type to get the tuning parameters for.
|
||||
*
|
||||
* @returns A tuning parameter value for the given range type.
|
||||
* @returns A tuning parameter value for the given range type in full mode.
|
||||
*
|
||||
* Defaults to the render range having one sceenful both leading and trailing and the preload range having two
|
||||
* screenfuls in both directions.
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Set the tuning parameters for a range type.
|
||||
* Set the tuning parameters for a range type in full mode.
|
||||
*
|
||||
* @param tuningParameters The tuning parameters to store for a range type.
|
||||
* @param rangeType The range type to set the tuning parameters for.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Tuning parameters for a range type in the specified mode.
|
||||
*
|
||||
* @param rangeMode The range mode to get the runing parameters for.
|
||||
* @param rangeType The range type to get the tuning parameters for.
|
||||
*
|
||||
* @returns A tuning parameter value for the given range type in the given mode.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Set the tuning parameters for a range type in the specigied mode.
|
||||
*
|
||||
* @param tuningParameters The tuning parameters to store for a range type.
|
||||
* @param rangeMode The range mode to set the runing parameters for.
|
||||
* @param rangeType The range type to set the tuning parameters for.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* The number of screens left to scroll before the delegate -collectionView:beginBatchFetchingWithContext: is called.
|
||||
*
|
||||
|
||||
@@ -347,15 +347,14 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
|
||||
return [_collectionNode tuningParametersForRangeType:rangeType];
|
||||
}
|
||||
|
||||
// These deprecated methods harken back from a time where only one range type existed.
|
||||
- (ASRangeTuningParameters)rangeTuningParameters
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [self tuningParametersForRangeType:ASLayoutRangeTypeDisplay];
|
||||
[_collectionNode setTuningParameters:tuningParameters forRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (void)setRangeTuningParameters:(ASRangeTuningParameters)tuningParameters
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
[self setTuningParameters:tuningParameters forRangeType:ASLayoutRangeTypeDisplay];
|
||||
return [_collectionNode tuningParametersForRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (CGSize)calculatedSizeForNodeAtIndexPath:(NSIndexPath *)indexPath
|
||||
|
||||
@@ -56,25 +56,53 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (instancetype)initWithFrame:(CGRect)frame style:(UITableViewStyle)style asyncDataFetching:(BOOL)asyncDataFetchingEnabled;
|
||||
|
||||
/**
|
||||
* Tuning parameters for a range.
|
||||
* Tuning parameters for a range type in full mode.
|
||||
*
|
||||
* @param rangeType The range to get the tuning parameters for.
|
||||
* @param rangeType The range type to get the tuning parameters for.
|
||||
*
|
||||
* @returns A tuning parameter value for the given range.
|
||||
* @returns A tuning parameter value for the given range type in full mode.
|
||||
*
|
||||
* Defaults to the render range having one sceenful both leading and trailing and the preload range having two
|
||||
* screenfuls in both directions.
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Set the tuning parameters for a range.
|
||||
* Set the tuning parameters for a range type in full mode.
|
||||
*
|
||||
* @param tuningParameters The tuning parameters to store for a range.
|
||||
* @param rangeType The range to set the tuning parameters for.
|
||||
* @param tuningParameters The tuning parameters to store for a range type.
|
||||
* @param rangeType The range type to set the tuning parameters for.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Tuning parameters for a range type in the specified mode.
|
||||
*
|
||||
* @param rangeMode The range mode to get the runing parameters for.
|
||||
* @param rangeType The range type to get the tuning parameters for.
|
||||
*
|
||||
* @returns A tuning parameter value for the given range type in the given mode.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* Set the tuning parameters for a range type in the specigied mode.
|
||||
*
|
||||
* @param tuningParameters The tuning parameters to store for a range type.
|
||||
* @param rangeMode The range mode to set the runing parameters for.
|
||||
* @param rangeType The range type to set the tuning parameters for.
|
||||
*
|
||||
* @see ASLayoutRangeMode
|
||||
* @see ASLayoutRangeType
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* The number of screens left to scroll before the delegate -tableView:beginBatchFetchingWithContext: is called.
|
||||
*
|
||||
|
||||
@@ -320,22 +320,22 @@ static NSString * const kCellReuseIdentifier = @"_ASTableViewCell";
|
||||
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
[_layoutController setTuningParameters:tuningParameters forRangeType:rangeType];
|
||||
[_layoutController setTuningParameters:tuningParameters forRangeMode:ASLayoutRangeModeFull rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [_layoutController tuningParametersForRangeType:rangeType];
|
||||
return [_layoutController tuningParametersForRangeMode:ASLayoutRangeModeFull rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (ASRangeTuningParameters)rangeTuningParameters
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [self tuningParametersForRangeType:ASLayoutRangeTypeDisplay];
|
||||
[_layoutController setTuningParameters:tuningParameters forRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (void)setRangeTuningParameters:(ASRangeTuningParameters)tuningParameters
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
[self setTuningParameters:tuningParameters forRangeType:ASLayoutRangeTypeDisplay];
|
||||
return [_layoutController tuningParametersForRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (NSArray<NSArray <ASCellNode *> *> *)completedNodes
|
||||
|
||||
@@ -16,12 +16,6 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class ASCellNode;
|
||||
|
||||
typedef NS_ENUM(NSUInteger, ASLayoutRangeMode) {
|
||||
ASLayoutRangeModeMinimum = 0,
|
||||
ASLayoutRangeModeFull,
|
||||
ASLayoutRangeModeCount
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
CGFloat leadingBufferScreenfuls;
|
||||
CGFloat trailingBufferScreenfuls;
|
||||
@@ -29,22 +23,6 @@ typedef struct {
|
||||
|
||||
@protocol ASLayoutController <NSObject>
|
||||
|
||||
/**
|
||||
* Tuning parameters for the range type in full mode. This method is deprecated.
|
||||
* Instead, use -setTuningParameters:forRangeMode:rangeType:
|
||||
*
|
||||
* @see setTuningParameters:forRangeMode:rangeType:
|
||||
*/
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType ASDISPLAYNODE_DEPRECATED;
|
||||
|
||||
/**
|
||||
* Get tuning parameters for the range type in full mode. This method is deprecated.
|
||||
* Instead, use -tuningParametersForRangeMode:rangeType:
|
||||
*
|
||||
* @see tuningParametersForRangeMode:rangeType:
|
||||
*/
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType ASDISPLAYNODE_DEPRECATED;
|
||||
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
@@ -8,6 +8,21 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
/// Each mode has a complete set of tuning parameters for range types.
|
||||
/// Depends on some conditions (including interface state and direction of the scroll view, state of rendering engine, etc),
|
||||
/// a range controller can choose which mode it should use at a given time.
|
||||
typedef NS_ENUM(NSUInteger, ASLayoutRangeMode) {
|
||||
/// Minimum mode is used when a range controller should limit the amount of work it performs.
|
||||
/// Thus, less views/layers are created and less data is fetched.
|
||||
/// Range controller can automatically switch to full mode when conditions changed.
|
||||
ASLayoutRangeModeMinimum = 0,
|
||||
/// Normal/Full mode that a range controller uses to provide the best experience for end users.
|
||||
/// This mode is usually used for an active scroll view.
|
||||
/// A range controller under this requires more resources compare to minimum mode.
|
||||
ASLayoutRangeModeFull,
|
||||
ASLayoutRangeModeCount
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger, ASLayoutRangeType) {
|
||||
ASLayoutRangeTypeVisible = 0,
|
||||
ASLayoutRangeTypeDisplay,
|
||||
|
||||
@@ -53,8 +53,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
*/
|
||||
- (void)configureContentView:(UIView *)contentView forCellNode:(ASCellNode *)node;
|
||||
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType;
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType;
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType;
|
||||
|
||||
/**
|
||||
* An object that describes the layout behavior of the ranged component (table view, collection view, etc.)
|
||||
|
||||
@@ -28,14 +28,14 @@
|
||||
{
|
||||
}
|
||||
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
|
||||
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
[_layoutController setTuningParameters:tuningParameters forRangeType:rangeType];
|
||||
[_layoutController setTuningParameters:tuningParameters forRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeType:(ASLayoutRangeType)rangeType
|
||||
- (ASRangeTuningParameters)tuningParametersForRangeMode:(ASLayoutRangeMode)rangeMode rangeType:(ASLayoutRangeType)rangeType
|
||||
{
|
||||
return [_layoutController tuningParametersForRangeType:rangeType];
|
||||
return [_layoutController tuningParametersForRangeMode:rangeMode rangeType:rangeType];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
Reference in New Issue
Block a user