mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-03 11:21:06 +00:00
Set default tuning params (#1158)
* fix SIMULATE_WEB_RESPONSE not imported #449 * Fix to make rangeMode update in right time * remove uncessary assert * Fix collection cell editing bug for iOS 9 & 10 * Revert "Fix collection cell editing bug for iOS 9 & 10" This reverts commit 06e18a10596622ff8a68835c95a23986d7bf61ea. * Only test when photo library is enabled. It will fail to build if photo library is disabled cause the test is depending on it. * Add ChangeLog. * set default tuning parameters for collection/table node * add change log * Move to framework private. * Apply to tableNode * trigger ci * fix directory * fix file link
This commit is contained in:
parent
a3763c9c91
commit
affddb0e96
@ -314,6 +314,7 @@
|
||||
B350625E1B0111780018CF92 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 051943121A1575630030A7D0 /* AssetsLibrary.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
BB5FC3CE1F9BA689007F191E /* ASNavigationControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BB5FC3CD1F9BA688007F191E /* ASNavigationControllerTests.m */; };
|
||||
BB5FC3D11F9C9389007F191E /* ASTabBarControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = BB5FC3D01F9C9389007F191E /* ASTabBarControllerTests.m */; };
|
||||
C018DF21216BF26700181FDA /* ASAbstractLayoutController+FrameworkPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = C018DF20216BF26600181FDA /* ASAbstractLayoutController+FrameworkPrivate.h */; };
|
||||
C057D9BD20B5453D00FC9112 /* ASTextNode2SnapshotTests.m in Sources */ = {isa = PBXBuildFile; fileRef = C057D9BC20B5453D00FC9112 /* ASTextNode2SnapshotTests.m */; };
|
||||
C78F7E2B1BF7809800CDEAFC /* ASTableNode.h in Headers */ = {isa = PBXBuildFile; fileRef = B0F880581BEAEC7500D17647 /* ASTableNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
CC034A091E60BEB400626263 /* ASDisplayNode+Convenience.h in Headers */ = {isa = PBXBuildFile; fileRef = CC034A071E60BEB400626263 /* ASDisplayNode+Convenience.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@ -827,6 +828,7 @@
|
||||
BB5FC3CD1F9BA688007F191E /* ASNavigationControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASNavigationControllerTests.m; sourceTree = "<group>"; };
|
||||
BB5FC3D01F9C9389007F191E /* ASTabBarControllerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASTabBarControllerTests.m; sourceTree = "<group>"; };
|
||||
BDC2D162BD55A807C1475DA5 /* Pods-AsyncDisplayKitTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AsyncDisplayKitTests.profile.xcconfig"; path = "Pods/Target Support Files/Pods-AsyncDisplayKitTests/Pods-AsyncDisplayKitTests.profile.xcconfig"; sourceTree = "<group>"; };
|
||||
C018DF20216BF26600181FDA /* ASAbstractLayoutController+FrameworkPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ASAbstractLayoutController+FrameworkPrivate.h"; sourceTree = "<group>"; };
|
||||
C057D9BC20B5453D00FC9112 /* ASTextNode2SnapshotTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASTextNode2SnapshotTests.m; sourceTree = "<group>"; };
|
||||
CC034A071E60BEB400626263 /* ASDisplayNode+Convenience.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "ASDisplayNode+Convenience.h"; sourceTree = "<group>"; };
|
||||
CC034A081E60BEB400626263 /* ASDisplayNode+Convenience.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "ASDisplayNode+Convenience.m"; sourceTree = "<group>"; };
|
||||
@ -1457,6 +1459,7 @@
|
||||
058D0A03195D050800B7D73C /* _ASCoreAnimationExtras.h */,
|
||||
058D0A04195D050800B7D73C /* _ASCoreAnimationExtras.mm */,
|
||||
AC026B6D1BD57DBF00BBC17E /* _ASHierarchyChangeSet.h */,
|
||||
C018DF20216BF26600181FDA /* ASAbstractLayoutController+FrameworkPrivate.h */,
|
||||
AC026B6E1BD57DBF00BBC17E /* _ASHierarchyChangeSet.mm */,
|
||||
058D0A05195D050800B7D73C /* _ASPendingState.h */,
|
||||
058D0A06195D050800B7D73C /* _ASPendingState.mm */,
|
||||
@ -1878,6 +1881,7 @@
|
||||
CC0F88621E4281E200576FED /* ASSectionController.h in Headers */,
|
||||
CCB1F95C1EFB6350009C7475 /* ASSignpost.h in Headers */,
|
||||
A2763D7A1CBDD57D00A9ADBD /* ASPINRemoteImageDownloader.h in Headers */,
|
||||
C018DF21216BF26700181FDA /* ASAbstractLayoutController+FrameworkPrivate.h in Headers */,
|
||||
34EFC7611B701C9C00AD841F /* ASBackgroundLayoutSpec.h in Headers */,
|
||||
B35062591B010F070018CF92 /* ASBaseDefines.h in Headers */,
|
||||
B35062131B010EFD0018CF92 /* ASBasicImageDownloader.h in Headers */,
|
||||
@ -2090,8 +2094,6 @@
|
||||
058D09B8195D04C000B7D73C /* Sources */,
|
||||
058D09B9195D04C000B7D73C /* Frameworks */,
|
||||
058D09BA195D04C000B7D73C /* Resources */,
|
||||
3B9D88CDF51B429C8409E4B6 /* [CP] Copy Pods Resources */,
|
||||
B130AB1AC0A1E5162E211C19 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@ -2211,36 +2213,6 @@
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3B9D88CDF51B429C8409E4B6 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AsyncDisplayKitTests/Pods-AsyncDisplayKitTests-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
B130AB1AC0A1E5162E211C19 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-AsyncDisplayKitTests/Pods-AsyncDisplayKitTests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
|
@ -1,5 +1,6 @@
|
||||
## master
|
||||
* Add your own contributions to the next release on the line below this with your name.
|
||||
- [ASCollectionViewLayoutController] Set default tuning parameters before view is loaded. [Max Wang](https://github.com/wsdwsd0829). [#1158](https://github.com/TextureGroup/Texture/pull/1158)
|
||||
- [ASPhotosFrameworkImageRequestTests] Guard photo library with macro for tests. [Max Wang](https://github.com/wsdwsd0829). [#1147](https://github.com/TextureGroup/Texture/pull/1147)
|
||||
- [ASDisplayNode] Do not cancel display when in exit hierarchy but let interface state changing to handle it. [Max Wang](https://github.com/wsdwsd0829). [#1110](https://github.com/TextureGroup/Texture/pull/1110)
|
||||
- [Breaking][ASDisplayNode] Make interface state delegate protocol required. [Max Wang](https://github.com/wsdwsd0829). [#1112](https://github.com/TextureGroup/Texture/pull/1112)
|
||||
|
@ -27,6 +27,7 @@
|
||||
#import <AsyncDisplayKit/ASCollectionView+Undeprecated.h>
|
||||
#import <AsyncDisplayKit/ASThread.h>
|
||||
#import <AsyncDisplayKit/ASRangeController.h>
|
||||
#import <AsyncDisplayKit/ASAbstractLayoutController+FrameworkPrivate.h>
|
||||
|
||||
#pragma mark - _ASCollectionPendingState
|
||||
|
||||
@ -62,7 +63,7 @@
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_rangeMode = ASLayoutRangeModeUnspecified;
|
||||
_tuningParameters = std::vector<std::vector<ASRangeTuningParameters>> (ASLayoutRangeModeCount, std::vector<ASRangeTuningParameters> (ASLayoutRangeTypeCount, ASRangeTuningParametersZero));
|
||||
_tuningParameters = [ASAbstractLayoutController defaultTuningParameters];
|
||||
_allowsSelection = YES;
|
||||
_allowsMultipleSelection = NO;
|
||||
_inverted = NO;
|
||||
@ -220,13 +221,11 @@
|
||||
let tuningParametersVectorRangeModeSize = tuningparametersRangeModeVector.size();
|
||||
for (NSInteger rangeType = 0; rangeType < tuningParametersVectorRangeModeSize; rangeType++) {
|
||||
ASRangeTuningParameters tuningParameters = tuningparametersRangeModeVector[rangeType];
|
||||
if (!ASRangeTuningParametersEqualToRangeTuningParameters(tuningParameters, ASRangeTuningParametersZero)) {
|
||||
[_rangeController setTuningParameters:tuningParameters
|
||||
forRangeMode:(ASLayoutRangeMode)rangeMode
|
||||
rangeType:(ASLayoutRangeType)rangeType];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pendingState.rangeMode != ASLayoutRangeModeUnspecified) {
|
||||
[_rangeController updateCurrentRangeWithMode:pendingState.rangeMode];
|
||||
|
@ -22,6 +22,7 @@
|
||||
#import <AsyncDisplayKit/ASThread.h>
|
||||
#import <AsyncDisplayKit/ASDisplayNode+Beta.h>
|
||||
#import <AsyncDisplayKit/ASRangeController.h>
|
||||
#import <AsyncDisplayKit/ASAbstractLayoutController+FrameworkPrivate.h>
|
||||
|
||||
#pragma mark - _ASTablePendingState
|
||||
|
||||
@ -54,7 +55,7 @@
|
||||
self = [super init];
|
||||
if (self) {
|
||||
_rangeMode = ASLayoutRangeModeUnspecified;
|
||||
_tuningParameters = std::vector<std::vector<ASRangeTuningParameters>> (ASLayoutRangeModeCount, std::vector<ASRangeTuningParameters> (ASLayoutRangeTypeCount, ASRangeTuningParametersZero));
|
||||
_tuningParameters = [ASAbstractLayoutController defaultTuningParameters];
|
||||
_allowsSelection = YES;
|
||||
_allowsSelectionDuringEditing = NO;
|
||||
_allowsMultipleSelection = NO;
|
||||
@ -171,13 +172,11 @@
|
||||
let tuningParametersVectorRangeModeSize = tuningparametersRangeModeVector.size();
|
||||
for (NSInteger rangeType = 0; rangeType < tuningParametersVectorRangeModeSize; rangeType++) {
|
||||
ASRangeTuningParameters tuningParameters = tuningparametersRangeModeVector[rangeType];
|
||||
if (!ASRangeTuningParametersEqualToRangeTuningParameters(tuningParameters, ASRangeTuningParametersZero)) {
|
||||
[_rangeController setTuningParameters:tuningParameters
|
||||
forRangeMode:(ASLayoutRangeMode)rangeMode
|
||||
rangeType:(ASLayoutRangeType)rangeType];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pendingState.rangeMode != ASLayoutRangeModeUnspecified) {
|
||||
[_rangeController updateCurrentRangeWithMode:pendingState.rangeMode];
|
||||
|
@ -8,11 +8,9 @@
|
||||
//
|
||||
|
||||
#import <AsyncDisplayKit/ASAbstractLayoutController.h>
|
||||
|
||||
#import <AsyncDisplayKit/ASAbstractLayoutController+FrameworkPrivate.h>
|
||||
#import <AsyncDisplayKit/ASAssert.h>
|
||||
|
||||
#include <vector>
|
||||
|
||||
ASRangeTuningParameters const ASRangeTuningParametersZero = {};
|
||||
|
||||
BOOL ASRangeTuningParametersEqualToRangeTuningParameters(ASRangeTuningParameters lhs, ASRangeTuningParameters rhs)
|
||||
@ -89,38 +87,34 @@ CGRect CGRectExpandToRangeWithScrollableDirections(CGRect rect, ASRangeTuningPar
|
||||
|
||||
@implementation ASAbstractLayoutController
|
||||
|
||||
- (instancetype)init
|
||||
+ (std::vector<std::vector<ASRangeTuningParameters>>)defaultTuningParameters
|
||||
{
|
||||
if (!(self = [super init])) {
|
||||
return nil;
|
||||
}
|
||||
ASDisplayNodeAssert(self.class != [ASAbstractLayoutController class], @"Should never create instances of abstract class ASAbstractLayoutController.");
|
||||
var tuningParameters = std::vector<std::vector<ASRangeTuningParameters>> (ASLayoutRangeModeCount, std::vector<ASRangeTuningParameters> (ASLayoutRangeTypeCount));
|
||||
|
||||
_tuningParameters = std::vector<std::vector<ASRangeTuningParameters>> (ASLayoutRangeModeCount, std::vector<ASRangeTuningParameters> (ASLayoutRangeTypeCount));
|
||||
|
||||
_tuningParameters[ASLayoutRangeModeFull][ASLayoutRangeTypeDisplay] = {
|
||||
tuningParameters[ASLayoutRangeModeFull][ASLayoutRangeTypeDisplay] = {
|
||||
.leadingBufferScreenfuls = 1.0,
|
||||
.trailingBufferScreenfuls = 0.5
|
||||
};
|
||||
_tuningParameters[ASLayoutRangeModeFull][ASLayoutRangeTypePreload] = {
|
||||
|
||||
tuningParameters[ASLayoutRangeModeFull][ASLayoutRangeTypePreload] = {
|
||||
.leadingBufferScreenfuls = 2.5,
|
||||
.trailingBufferScreenfuls = 1.5
|
||||
};
|
||||
|
||||
_tuningParameters[ASLayoutRangeModeMinimum][ASLayoutRangeTypeDisplay] = {
|
||||
tuningParameters[ASLayoutRangeModeMinimum][ASLayoutRangeTypeDisplay] = {
|
||||
.leadingBufferScreenfuls = 0.25,
|
||||
.trailingBufferScreenfuls = 0.25
|
||||
};
|
||||
_tuningParameters[ASLayoutRangeModeMinimum][ASLayoutRangeTypePreload] = {
|
||||
tuningParameters[ASLayoutRangeModeMinimum][ASLayoutRangeTypePreload] = {
|
||||
.leadingBufferScreenfuls = 0.5,
|
||||
.trailingBufferScreenfuls = 0.25
|
||||
};
|
||||
|
||||
_tuningParameters[ASLayoutRangeModeVisibleOnly][ASLayoutRangeTypeDisplay] = {
|
||||
tuningParameters[ASLayoutRangeModeVisibleOnly][ASLayoutRangeTypeDisplay] = {
|
||||
.leadingBufferScreenfuls = 0,
|
||||
.trailingBufferScreenfuls = 0
|
||||
};
|
||||
_tuningParameters[ASLayoutRangeModeVisibleOnly][ASLayoutRangeTypePreload] = {
|
||||
tuningParameters[ASLayoutRangeModeVisibleOnly][ASLayoutRangeTypePreload] = {
|
||||
.leadingBufferScreenfuls = 0,
|
||||
.trailingBufferScreenfuls = 0
|
||||
};
|
||||
@ -128,14 +122,25 @@ CGRect CGRectExpandToRangeWithScrollableDirections(CGRect rect, ASRangeTuningPar
|
||||
// The Low Memory range mode has special handling. Because a zero range still includes the visible area / bounds,
|
||||
// in order to implement the behavior of releasing all graphics memory (backing stores), ASRangeController must check
|
||||
// for this range mode and use an empty set for displayIndexPaths rather than querying the ASLayoutController for the indexPaths.
|
||||
_tuningParameters[ASLayoutRangeModeLowMemory][ASLayoutRangeTypeDisplay] = {
|
||||
tuningParameters[ASLayoutRangeModeLowMemory][ASLayoutRangeTypeDisplay] = {
|
||||
.leadingBufferScreenfuls = 0,
|
||||
.trailingBufferScreenfuls = 0
|
||||
};
|
||||
_tuningParameters[ASLayoutRangeModeLowMemory][ASLayoutRangeTypePreload] = {
|
||||
tuningParameters[ASLayoutRangeModeLowMemory][ASLayoutRangeTypePreload] = {
|
||||
.leadingBufferScreenfuls = 0,
|
||||
.trailingBufferScreenfuls = 0
|
||||
};
|
||||
return tuningParameters;
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
if (!(self = [super init])) {
|
||||
return nil;
|
||||
}
|
||||
ASDisplayNodeAssert(self.class != [ASAbstractLayoutController class], @"Should never create instances of abstract class ASAbstractLayoutController.");
|
||||
|
||||
_tuningParameters = [[self class] defaultTuningParameters];
|
||||
|
||||
return self;
|
||||
}
|
||||
|
@ -21,7 +21,6 @@ struct ASRangeGeometry {
|
||||
};
|
||||
typedef struct ASRangeGeometry ASRangeGeometry;
|
||||
|
||||
|
||||
#pragma mark -
|
||||
#pragma mark ASCollectionViewLayoutController
|
||||
|
||||
|
21
Source/Private/ASAbstractLayoutController+FrameworkPrivate.h
Normal file
21
Source/Private/ASAbstractLayoutController+FrameworkPrivate.h
Normal file
@ -0,0 +1,21 @@
|
||||
//
|
||||
// ASAbstractLayoutController+FrameworkPrivate.h
|
||||
// Texture
|
||||
//
|
||||
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
||||
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
|
||||
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
|
||||
//
|
||||
// The following methods are ONLY for use by _ASDisplayLayer, _ASDisplayView, and ASDisplayNode.
|
||||
// These methods must never be called or overridden by other classes.
|
||||
//
|
||||
|
||||
#include <vector>
|
||||
|
||||
@interface ASAbstractLayoutController (FrameworkPrivate)
|
||||
|
||||
+ (std::vector<std::vector<ASRangeTuningParameters>>)defaultTuningParameters;
|
||||
|
||||
@end
|
Loading…
x
Reference in New Issue
Block a user