Merge remote-tracking branch 'facebook/master' into ASVideoPlayerNode

# Conflicts:
#	AsyncDisplayKit.xcodeproj/project.pbxproj
This commit is contained in:
Erekle 2016-05-26 12:15:23 +04:00
commit 4f40f3c12f
10 changed files with 75 additions and 53 deletions

View File

@ -563,8 +563,8 @@
DBDB83971C6E879900D0098C /* ASPagerFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = DBDB83931C6E879900D0098C /* ASPagerFlowLayout.m */; }; DBDB83971C6E879900D0098C /* ASPagerFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = DBDB83931C6E879900D0098C /* ASPagerFlowLayout.m */; };
DE040EF91C2B40AC004692FF /* ASCollectionViewFlowLayoutInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 251B8EF41BBB3D690087C538 /* ASCollectionViewFlowLayoutInspector.h */; settings = {ATTRIBUTES = (Public, ); }; }; DE040EF91C2B40AC004692FF /* ASCollectionViewFlowLayoutInspector.h in Headers */ = {isa = PBXBuildFile; fileRef = 251B8EF41BBB3D690087C538 /* ASCollectionViewFlowLayoutInspector.h */; settings = {ATTRIBUTES = (Public, ); }; };
DE0702FC1C3671E900D7DE62 /* libAsyncDisplayKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 058D09AC195D04C000B7D73C /* libAsyncDisplayKit.a */; }; DE0702FC1C3671E900D7DE62 /* libAsyncDisplayKit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 058D09AC195D04C000B7D73C /* libAsyncDisplayKit.a */; };
DE4843DB1C93EAB100A1F33B /* ASDisplayNodeLayoutContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = E52405B21C8FEF03004DC8E7 /* ASDisplayNodeLayoutContext.mm */; }; DE4843DB1C93EAB100A1F33B /* ASLayoutTransition.mm in Sources */ = {isa = PBXBuildFile; fileRef = E52405B21C8FEF03004DC8E7 /* ASLayoutTransition.mm */; };
DE4843DC1C93EAC100A1F33B /* ASDisplayNodeLayoutContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E52405B41C8FEF16004DC8E7 /* ASDisplayNodeLayoutContext.h */; }; DE4843DC1C93EAC100A1F33B /* ASLayoutTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = E52405B41C8FEF16004DC8E7 /* ASLayoutTransition.h */; };
DE6EA3221C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */; }; DE6EA3221C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */; };
DE6EA3231C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */; }; DE6EA3231C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */; };
DE84918D1C8FFF2B003D89E9 /* ASRunLoopQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 81EE384D1C8E94F000456208 /* ASRunLoopQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; DE84918D1C8FFF2B003D89E9 /* ASRunLoopQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 81EE384D1C8E94F000456208 /* ASRunLoopQueue.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -582,8 +582,8 @@
DECBD6E91BE56E1900CF4905 /* ASButtonNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */; }; DECBD6E91BE56E1900CF4905 /* ASButtonNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */; };
DECBD6EA1BE56E1900CF4905 /* ASButtonNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */; }; DECBD6EA1BE56E1900CF4905 /* ASButtonNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */; };
DEFAD8131CC48914000527C4 /* ASVideoNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = AEEC47E01C20C2DD00EC1693 /* ASVideoNode.mm */; }; DEFAD8131CC48914000527C4 /* ASVideoNode.mm in Sources */ = {isa = PBXBuildFile; fileRef = AEEC47E01C20C2DD00EC1693 /* ASVideoNode.mm */; };
E52405B31C8FEF03004DC8E7 /* ASDisplayNodeLayoutContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = E52405B21C8FEF03004DC8E7 /* ASDisplayNodeLayoutContext.mm */; }; E52405B31C8FEF03004DC8E7 /* ASLayoutTransition.mm in Sources */ = {isa = PBXBuildFile; fileRef = E52405B21C8FEF03004DC8E7 /* ASLayoutTransition.mm */; };
E52405B51C8FEF16004DC8E7 /* ASDisplayNodeLayoutContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E52405B41C8FEF16004DC8E7 /* ASDisplayNodeLayoutContext.h */; }; E52405B51C8FEF16004DC8E7 /* ASLayoutTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = E52405B41C8FEF16004DC8E7 /* ASLayoutTransition.h */; };
E55D86321CA8A14000A0C26F /* ASLayoutable.mm in Sources */ = {isa = PBXBuildFile; fileRef = E55D86311CA8A14000A0C26F /* ASLayoutable.mm */; }; E55D86321CA8A14000A0C26F /* ASLayoutable.mm in Sources */ = {isa = PBXBuildFile; fileRef = E55D86311CA8A14000A0C26F /* ASLayoutable.mm */; };
E55D86331CA8A14000A0C26F /* ASLayoutable.mm in Sources */ = {isa = PBXBuildFile; fileRef = E55D86311CA8A14000A0C26F /* ASLayoutable.mm */; }; E55D86331CA8A14000A0C26F /* ASLayoutable.mm in Sources */ = {isa = PBXBuildFile; fileRef = E55D86311CA8A14000A0C26F /* ASLayoutable.mm */; };
E5711A2B1C840C81009619D4 /* ASIndexedNodeContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E5711A2A1C840C81009619D4 /* ASIndexedNodeContext.h */; settings = {ATTRIBUTES = (Public, ); }; }; E5711A2B1C840C81009619D4 /* ASIndexedNodeContext.h in Headers */ = {isa = PBXBuildFile; fileRef = E5711A2A1C840C81009619D4 /* ASIndexedNodeContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
@ -949,8 +949,8 @@
DEC146B51C37A16A004A0EE7 /* ASCollectionInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASCollectionInternal.m; path = Details/ASCollectionInternal.m; sourceTree = "<group>"; }; DEC146B51C37A16A004A0EE7 /* ASCollectionInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASCollectionInternal.m; path = Details/ASCollectionInternal.m; sourceTree = "<group>"; };
DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASButtonNode.h; sourceTree = "<group>"; }; DECBD6E51BE56E1900CF4905 /* ASButtonNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASButtonNode.h; sourceTree = "<group>"; };
DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASButtonNode.mm; sourceTree = "<group>"; }; DECBD6E61BE56E1900CF4905 /* ASButtonNode.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASButtonNode.mm; sourceTree = "<group>"; };
E52405B21C8FEF03004DC8E7 /* ASDisplayNodeLayoutContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASDisplayNodeLayoutContext.mm; sourceTree = "<group>"; }; E52405B21C8FEF03004DC8E7 /* ASLayoutTransition.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ASLayoutTransition.mm; sourceTree = "<group>"; };
E52405B41C8FEF16004DC8E7 /* ASDisplayNodeLayoutContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASDisplayNodeLayoutContext.h; sourceTree = "<group>"; }; E52405B41C8FEF16004DC8E7 /* ASLayoutTransition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASLayoutTransition.h; sourceTree = "<group>"; };
E55D86311CA8A14000A0C26F /* ASLayoutable.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ASLayoutable.mm; path = AsyncDisplayKit/Layout/ASLayoutable.mm; sourceTree = "<group>"; }; E55D86311CA8A14000A0C26F /* ASLayoutable.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ASLayoutable.mm; path = AsyncDisplayKit/Layout/ASLayoutable.mm; sourceTree = "<group>"; };
E5711A2A1C840C81009619D4 /* ASIndexedNodeContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIndexedNodeContext.h; sourceTree = "<group>"; }; E5711A2A1C840C81009619D4 /* ASIndexedNodeContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIndexedNodeContext.h; sourceTree = "<group>"; };
E5711A2D1C840C96009619D4 /* ASIndexedNodeContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIndexedNodeContext.m; sourceTree = "<group>"; }; E5711A2D1C840C96009619D4 /* ASIndexedNodeContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIndexedNodeContext.m; sourceTree = "<group>"; };
@ -1320,8 +1320,8 @@
DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */, DE6EA3211C14000600183B10 /* ASDisplayNode+FrameworkPrivate.h */,
058D0A0B195D050800B7D73C /* ASDisplayNode+UIViewBridge.mm */, 058D0A0B195D050800B7D73C /* ASDisplayNode+UIViewBridge.mm */,
058D0A0C195D050800B7D73C /* ASDisplayNodeInternal.h */, 058D0A0C195D050800B7D73C /* ASDisplayNodeInternal.h */,
E52405B41C8FEF16004DC8E7 /* ASDisplayNodeLayoutContext.h */, E52405B41C8FEF16004DC8E7 /* ASLayoutTransition.h */,
E52405B21C8FEF03004DC8E7 /* ASDisplayNodeLayoutContext.mm */, E52405B21C8FEF03004DC8E7 /* ASLayoutTransition.mm */,
69E100691CA89CB600D88C1B /* ASEnvironmentInternal.h */, 69E100691CA89CB600D88C1B /* ASEnvironmentInternal.h */,
69E1006A1CA89CB600D88C1B /* ASEnvironmentInternal.mm */, 69E1006A1CA89CB600D88C1B /* ASEnvironmentInternal.mm */,
058D0A0D195D050800B7D73C /* ASImageNode+CGExtras.h */, 058D0A0D195D050800B7D73C /* ASImageNode+CGExtras.h */,
@ -1615,7 +1615,7 @@
055B9FA81A1C154B00035D6D /* ASNetworkImageNode.h in Headers */, 055B9FA81A1C154B00035D6D /* ASNetworkImageNode.h in Headers */,
ACF6ED2B1B17843500DA7C62 /* ASOverlayLayoutSpec.h in Headers */, ACF6ED2B1B17843500DA7C62 /* ASOverlayLayoutSpec.h in Headers */,
055F1A3819ABD413004DAFF1 /* ASRangeController.h in Headers */, 055F1A3819ABD413004DAFF1 /* ASRangeController.h in Headers */,
E52405B51C8FEF16004DC8E7 /* ASDisplayNodeLayoutContext.h in Headers */, E52405B51C8FEF16004DC8E7 /* ASLayoutTransition.h in Headers */,
ACF6ED2D1B17843500DA7C62 /* ASRatioLayoutSpec.h in Headers */, ACF6ED2D1B17843500DA7C62 /* ASRatioLayoutSpec.h in Headers */,
AC47D9451B3BB41900AAEE9D /* ASRelativeSize.h in Headers */, AC47D9451B3BB41900AAEE9D /* ASRelativeSize.h in Headers */,
291B63FB1AA53A7A000A71B3 /* ASScrollDirection.h in Headers */, 291B63FB1AA53A7A000A71B3 /* ASScrollDirection.h in Headers */,
@ -1790,7 +1790,7 @@
E5711A2C1C840C81009619D4 /* ASIndexedNodeContext.h in Headers */, E5711A2C1C840C81009619D4 /* ASIndexedNodeContext.h in Headers */,
254C6B7B1BF94DF4003EC431 /* ASTextKitRenderer+Positioning.h in Headers */, 254C6B7B1BF94DF4003EC431 /* ASTextKitRenderer+Positioning.h in Headers */,
CC7FD9E21BB603FF005CCB2B /* ASPhotosFrameworkImageRequest.h in Headers */, CC7FD9E21BB603FF005CCB2B /* ASPhotosFrameworkImageRequest.h in Headers */,
DE4843DC1C93EAC100A1F33B /* ASDisplayNodeLayoutContext.h in Headers */, DE4843DC1C93EAC100A1F33B /* ASLayoutTransition.h in Headers */,
254C6B761BF94DF4003EC431 /* ASTextNodeTypes.h in Headers */, 254C6B761BF94DF4003EC431 /* ASTextNodeTypes.h in Headers */,
34EFC7711B701CFF00AD841F /* ASStackLayoutSpec.h in Headers */, 34EFC7711B701CFF00AD841F /* ASStackLayoutSpec.h in Headers */,
2767E9411BB19BD600EA9B77 /* ASViewController.h in Headers */, 2767E9411BB19BD600EA9B77 /* ASViewController.h in Headers */,
@ -2100,7 +2100,7 @@
0442850F1BAA64EC00D16268 /* ASMultidimensionalArrayUtils.mm in Sources */, 0442850F1BAA64EC00D16268 /* ASMultidimensionalArrayUtils.mm in Sources */,
7A06A73A1C35F08800FE8DAA /* ASRelativeLayoutSpec.mm in Sources */, 7A06A73A1C35F08800FE8DAA /* ASRelativeLayoutSpec.mm in Sources */,
257754921BED28F300737CA5 /* ASEqualityHashHelpers.mm in Sources */, 257754921BED28F300737CA5 /* ASEqualityHashHelpers.mm in Sources */,
E52405B31C8FEF03004DC8E7 /* ASDisplayNodeLayoutContext.mm in Sources */, E52405B31C8FEF03004DC8E7 /* ASLayoutTransition.mm in Sources */,
69CB62AD1CB8165900024920 /* _ASDisplayViewAccessiblity.mm in Sources */, 69CB62AD1CB8165900024920 /* _ASDisplayViewAccessiblity.mm in Sources */,
257754AB1BEE44CD00737CA5 /* ASTextKitEntityAttribute.m in Sources */, 257754AB1BEE44CD00737CA5 /* ASTextKitEntityAttribute.m in Sources */,
055F1A3919ABD413004DAFF1 /* ASRangeController.mm in Sources */, 055F1A3919ABD413004DAFF1 /* ASRangeController.mm in Sources */,
@ -2189,7 +2189,7 @@
files = ( files = (
9C70F2091CDABA36007D6C76 /* ASViewController.mm in Sources */, 9C70F2091CDABA36007D6C76 /* ASViewController.mm in Sources */,
8BBBAB8D1CEBAF1E00107FC6 /* ASDefaultPlaybackButton.m in Sources */, 8BBBAB8D1CEBAF1E00107FC6 /* ASDefaultPlaybackButton.m in Sources */,
DE4843DB1C93EAB100A1F33B /* ASDisplayNodeLayoutContext.mm in Sources */, DE4843DB1C93EAB100A1F33B /* ASLayoutTransition.mm in Sources */,
B30BF6541C59D889004FCD53 /* ASLayoutManager.m in Sources */, B30BF6541C59D889004FCD53 /* ASLayoutManager.m in Sources */,
92DD2FE71BF4D0850074C9DD /* ASMapNode.mm in Sources */, 92DD2FE71BF4D0850074C9DD /* ASMapNode.mm in Sources */,
636EA1A51C7FF4EF00EE152F /* ASDefaultPlayButton.m in Sources */, 636EA1A51C7FF4EF00EE152F /* ASDefaultPlayButton.m in Sources */,

View File

@ -164,6 +164,12 @@ NS_ASSUME_NONNULL_BEGIN
*/ */
- (void)reloadDataImmediately; - (void)reloadDataImmediately;
/**
* Triggers a relayout of all nodes.
*
*/
- (void)relayoutItems;
/** /**
* Blocks execution of the main thread until all section and row updates are committed. This method must be called from the main thread. * Blocks execution of the main thread until all section and row updates are committed. This method must be called from the main thread.
*/ */

View File

@ -313,6 +313,11 @@ static NSString * const kCellReuseIdentifier = @"_ASCollectionViewCell";
[super reloadData]; [super reloadData];
} }
- (void)relayoutItems
{
[_dataController relayoutAllNodes];
}
- (void)waitUntilAllUpdatesAreCommitted - (void)waitUntilAllUpdatesAreCommitted
{ {
ASDisplayNodeAssertMainThread(); ASDisplayNodeAssertMainThread();

View File

@ -20,7 +20,7 @@
#import "_ASDisplayView.h" #import "_ASDisplayView.h"
#import "_ASScopeTimer.h" #import "_ASScopeTimer.h"
#import "_ASCoreAnimationExtras.h" #import "_ASCoreAnimationExtras.h"
#import "ASDisplayNodeLayoutContext.h" #import "ASLayoutTransition.h"
#import "ASDisplayNodeExtras.h" #import "ASDisplayNodeExtras.h"
#import "ASTraitCollection.h" #import "ASTraitCollection.h"
#import "ASEqualityHelpers.h" #import "ASEqualityHelpers.h"
@ -613,19 +613,19 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c)
ASLayout *newLayout = [self calculateLayoutThatFits:constrainedSize]; ASLayout *newLayout = [self calculateLayoutThatFits:constrainedSize];
if (ASHierarchyStateIncludesLayoutPending(_hierarchyState)) { if (ASHierarchyStateIncludesLayoutPending(_hierarchyState)) {
_pendingLayoutContext = [[ASDisplayNodeLayoutContext alloc] initWithNode:self _pendingLayoutTransition = [[ASLayoutTransition alloc] initWithNode:self
pendingLayout:newLayout pendingLayout:newLayout
pendingConstrainedSize:constrainedSize pendingConstrainedSize:constrainedSize
previousLayout:previousLayout previousLayout:previousLayout
previousConstrainedSize:previousConstrainedSize]; previousConstrainedSize:previousConstrainedSize];
} else { } else {
ASDisplayNodeLayoutContext *layoutContext; ASLayoutTransition *layoutContext;
if (self.usesImplicitHierarchyManagement) { if (self.usesImplicitHierarchyManagement) {
layoutContext = [[ASDisplayNodeLayoutContext alloc] initWithNode:self layoutContext = [[ASLayoutTransition alloc] initWithNode:self
pendingLayout:newLayout pendingLayout:newLayout
pendingConstrainedSize:constrainedSize pendingConstrainedSize:constrainedSize
previousLayout:previousLayout previousLayout:previousLayout
previousConstrainedSize:previousConstrainedSize]; previousConstrainedSize:previousConstrainedSize];
} }
[self applyLayout:newLayout constrainedSize:constrainedSize layoutContext:layoutContext]; [self applyLayout:newLayout constrainedSize:constrainedSize layoutContext:layoutContext];
[self _completeLayoutCalculation]; [self _completeLayoutCalculation];
@ -740,15 +740,15 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c)
completion(); completion();
} }
_pendingLayoutContext = [[ASDisplayNodeLayoutContext alloc] initWithNode:self _pendingLayoutTransition = [[ASLayoutTransition alloc] initWithNode:self
pendingLayout:newLayout pendingLayout:newLayout
pendingConstrainedSize:constrainedSize pendingConstrainedSize:constrainedSize
previousLayout:previousLayout previousLayout:previousLayout
previousConstrainedSize:previousConstrainedSize]; previousConstrainedSize:previousConstrainedSize];
[_pendingLayoutContext applySubnodeInsertions]; [_pendingLayoutTransition applySubnodeInsertions];
_transitionContext = [[_ASTransitionContext alloc] initWithAnimation:animated _transitionContext = [[_ASTransitionContext alloc] initWithAnimation:animated
layoutDelegate:_pendingLayoutContext layoutDelegate:_pendingLayoutTransition
completionDelegate:self]; completionDelegate:self];
[self animateLayoutTransition:_transitionContext]; [self animateLayoutTransition:_transitionContext];
}); });
@ -849,9 +849,9 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c)
- (void)didCompleteLayoutTransition:(id<ASContextTransitioning>)context - (void)didCompleteLayoutTransition:(id<ASContextTransitioning>)context
{ {
[_pendingLayoutContext applySubnodeRemovals]; [_pendingLayoutTransition applySubnodeRemovals];
[self _completeLayoutCalculation]; [self _completeLayoutCalculation];
_pendingLayoutContext = nil; _pendingLayoutTransition = nil;
} }
@ -941,7 +941,7 @@ static ASDisplayNodeMethodOverrides GetASDisplayNodeMethodOverrides(Class c)
[self _addSubnodeViewsAndLayers]; [self _addSubnodeViewsAndLayers];
} }
if (self.interfaceState & ASInterfaceStateVisible) { if (ASInterfaceStateIncludesVisible(self.interfaceState)) {
// TODO: Change this to recursivelyEnsureDisplay - but need a variant that does not skip // TODO: Change this to recursivelyEnsureDisplay - but need a variant that does not skip
// nodes that have shouldBypassEnsureDisplay set (such as image nodes) so they are rasterized. // nodes that have shouldBypassEnsureDisplay set (such as image nodes) so they are rasterized.
[self recursivelyDisplayImmediately]; [self recursivelyDisplayImmediately];
@ -2308,7 +2308,7 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
{ {
ASDN::MutexLocker l(_propertyLock); ASDN::MutexLocker l(_propertyLock);
_pendingTransitionID = ASLayoutableContextInvalidTransitionID; _pendingTransitionID = ASLayoutableContextInvalidTransitionID;
_pendingLayoutContext = nil; _pendingLayoutTransition = nil;
} }
} }
} }
@ -2341,17 +2341,17 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
- (void)applyPendingLayoutContext - (void)applyPendingLayoutContext
{ {
ASDN::MutexLocker l(_propertyLock); ASDN::MutexLocker l(_propertyLock);
if (_pendingLayoutContext) { if (_pendingLayoutTransition) {
[self applyLayout:_pendingLayoutContext.pendingLayout [self applyLayout:_pendingLayoutTransition.pendingLayout
constrainedSize:_pendingLayoutContext.pendingConstrainedSize constrainedSize:_pendingLayoutTransition.pendingConstrainedSize
layoutContext:_pendingLayoutContext]; layoutContext:_pendingLayoutTransition];
_pendingLayoutContext = nil; _pendingLayoutTransition = nil;
} }
} }
- (void)applyLayout:(ASLayout *)layout - (void)applyLayout:(ASLayout *)layout
constrainedSize:(ASSizeRange)constrainedSize constrainedSize:(ASSizeRange)constrainedSize
layoutContext:(ASDisplayNodeLayoutContext *)layoutContext layoutContext:(ASLayoutTransition *)layoutContext
{ {
ASDN::MutexLocker l(_propertyLock); ASDN::MutexLocker l(_propertyLock);
_layout = layout; _layout = layout;

View File

@ -134,6 +134,12 @@ NS_ASSUME_NONNULL_BEGIN
*/ */
- (void)reloadDataImmediately; - (void)reloadDataImmediately;
/**
* Triggers a relayout of all nodes.
*
*/
- (void)relayoutItems;
/** /**
* begins a batch of insert, delete reload and move operations. This method must be called from the main thread. * begins a batch of insert, delete reload and move operations. This method must be called from the main thread.
*/ */
@ -285,9 +291,9 @@ NS_ASSUME_NONNULL_BEGIN
/** /**
* Similar to -visibleCells. * Similar to -visibleCells.
* *
* @returns an array containing the nodes being displayed on screen. * @returns an array containing the cell nodes being displayed on screen.
*/ */
- (NSArray<ASDisplayNode *> *)visibleNodes; - (NSArray<ASCellNode *> *)visibleNodes;
/** /**
* YES to automatically adjust the contentOffset when cells are inserted or deleted "before" * YES to automatically adjust the contentOffset when cells are inserted or deleted "before"

View File

@ -354,6 +354,11 @@ static NSString * const kCellReuseIdentifier = @"_ASTableViewCell";
[super reloadData]; [super reloadData];
} }
- (void)relayoutItems
{
[_dataController relayoutAllNodes];
}
- (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType - (void)setTuningParameters:(ASRangeTuningParameters)tuningParameters forRangeType:(ASLayoutRangeType)rangeType
{ {
[_layoutController setTuningParameters:tuningParameters forRangeMode:ASLayoutRangeModeFull rangeType:rangeType]; [_layoutController setTuningParameters:tuningParameters forRangeMode:ASLayoutRangeModeFull rangeType:rangeType];
@ -389,11 +394,11 @@ static NSString * const kCellReuseIdentifier = @"_ASTableViewCell";
return [_dataController indexPathForNode:cellNode]; return [_dataController indexPathForNode:cellNode];
} }
- (NSArray *)visibleNodes - (NSArray<ASCellNode *> *)visibleNodes
{ {
NSArray *indexPaths = [self visibleNodeIndexPathsForRangeController:_rangeController]; NSArray *indexPaths = [self visibleNodeIndexPathsForRangeController:_rangeController];
NSMutableArray *visibleNodes = [NSMutableArray array]; NSMutableArray<ASCellNode *> *visibleNodes = [NSMutableArray array];
for (NSIndexPath *indexPath in indexPaths) { for (NSIndexPath *indexPath in indexPaths) {
ASCellNode *node = [self nodeForRowAtIndexPath:indexPath]; ASCellNode *node = [self nodeForRowAtIndexPath:indexPath];
if (node) { if (node) {

View File

@ -16,7 +16,7 @@
#import "ASSentinel.h" #import "ASSentinel.h"
#import "ASThread.h" #import "ASThread.h"
#import "_ASTransitionContext.h" #import "_ASTransitionContext.h"
#import "ASDisplayNodeLayoutContext.h" #import "ASLayoutTransition.h"
#import "ASEnvironment.h" #import "ASEnvironment.h"
#include <vector> #include <vector>
@ -113,7 +113,7 @@ FOUNDATION_EXPORT NSString * const ASRenderingEngineDidDisplayNodesScheduledBefo
BOOL _usesImplicitHierarchyManagement; BOOL _usesImplicitHierarchyManagement;
int32_t _pendingTransitionID; int32_t _pendingTransitionID;
ASDisplayNodeLayoutContext *_pendingLayoutContext; ASLayoutTransition *_pendingLayoutTransition;
ASDisplayNodeViewBlock _viewBlock; ASDisplayNodeViewBlock _viewBlock;
ASDisplayNodeLayerBlock _layerBlock; ASDisplayNodeLayerBlock _layerBlock;

View File

@ -1,5 +1,5 @@
// //
// ASDisplayNodeLayoutContext.h // ASLayoutTransition.h
// AsyncDisplayKit // AsyncDisplayKit
// //
// Created by Huy Nguyen on 3/8/16. // Created by Huy Nguyen on 3/8/16.
@ -12,7 +12,7 @@
@class ASDisplayNode; @class ASDisplayNode;
@class ASLayout; @class ASLayout;
@interface ASDisplayNodeLayoutContext : NSObject <_ASTransitionContextLayoutDelegate> @interface ASLayoutTransition : NSObject <_ASTransitionContextLayoutDelegate>
@property (nonatomic, readonly, weak) ASDisplayNode *node; @property (nonatomic, readonly, weak) ASDisplayNode *node;
@property (nonatomic, readonly, strong) ASLayout *pendingLayout; @property (nonatomic, readonly, strong) ASLayout *pendingLayout;

View File

@ -1,12 +1,12 @@
// //
// ASDisplayNodeLayoutContext.mm // ASLayoutTransition.mm
// AsyncDisplayKit // AsyncDisplayKit
// //
// Created by Huy Nguyen on 3/8/16. // Created by Huy Nguyen on 3/8/16.
// Copyright © 2016 Facebook. All rights reserved. // Copyright © 2016 Facebook. All rights reserved.
// //
#import "ASDisplayNodeLayoutContext.h" #import "ASLayoutTransition.h"
#import "ASDisplayNode.h" #import "ASDisplayNode.h"
#import "ASDisplayNodeInternal.h" #import "ASDisplayNodeInternal.h"
@ -18,7 +18,7 @@
#import "NSArray+Diffing.h" #import "NSArray+Diffing.h"
#import "ASEqualityHelpers.h" #import "ASEqualityHelpers.h"
@implementation ASDisplayNodeLayoutContext { @implementation ASLayoutTransition {
ASDN::RecursiveMutex _propertyLock; ASDN::RecursiveMutex _propertyLock;
BOOL _calculatedSubnodeOperations; BOOL _calculatedSubnodeOperations;
NSArray<ASDisplayNode *> *_insertedSubnodes; NSArray<ASDisplayNode *> *_insertedSubnodes;

View File

@ -2,7 +2,7 @@ source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '7.0' platform :ios, '7.0'
target :'AsyncDisplayKitTests', :exclusive => true do target :'AsyncDisplayKitTests' do
pod 'OCMock', '~> 2.2' pod 'OCMock', '~> 2.2'
pod 'FBSnapshotTestCase', '~> 1.8.1' pod 'FBSnapshotTestCase', '~> 1.8.1'
end end