updated load and display did change methods

This commit is contained in:
Luke Parham 2016-05-04 16:38:10 -05:00
parent 8526171b30
commit d47059dffe
3 changed files with 39 additions and 61 deletions

View File

@ -243,32 +243,22 @@ NS_ASSUME_NONNULL_BEGIN
- (void)visibilityDidChange:(BOOL)isVisible ASDISPLAYNODE_REQUIRES_SUPER; - (void)visibilityDidChange:(BOOL)isVisible ASDISPLAYNODE_REQUIRES_SUPER;
/** /**
* @abstract Called whenever the the node enters the display range. * @abstract Called whenever the the node has entered or left the display state.
* *
* @discussion Subclasses may use this to monitor when they enter the display range. * @discussion Subclasses may use this to monitor when a node should be rendering its content.
*
* @note This method can be called from any thread and should therefore be thread safe.
*/ */
- (void)didEnterDisplayRange ASDISPLAYNODE_REQUIRES_SUPER; - (void)displayStateDidChange:(BOOL)inDisplayState ASDISPLAYNODE_REQUIRES_SUPER;
/** /**
* @abstract Called whenever the the node exits the display range. * @abstract Called whenever the the node has entered or left the load state.
* *
* @discussion Subclasses may use this to monitor when they exit the display range. * @discussion Subclasses may use this to monitor data for a node should be loaded, either from a local or remote source.
*/
- (void)didExitDisplayRange ASDISPLAYNODE_REQUIRES_SUPER;
/**
* @abstract Called whenever the the node enters the fetch data range.
* *
* @discussion Subclasses may use this to monitor when they enter the fetch data range. * @note This method can be called from any thread and should therefore be thread safe.
*/ */
- (void)didEnterFetchDataRange ASDISPLAYNODE_REQUIRES_SUPER; - (void)loadStateDidChange:(BOOL)inLoadState ASDISPLAYNODE_REQUIRES_SUPER;
/**
* @abstract Called whenever the the node exits the fetch data range.
*
* @discussion Subclasses may use this to monitor when they exit the fetch data range.
*/
- (void)didExitFetchDataRange ASDISPLAYNODE_REQUIRES_SUPER;
/** /**
* Called just before the view is added to a window. * Called just before the view is added to a window.

View File

@ -2178,22 +2178,12 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
// subclass override // subclass override
} }
- (void)didEnterDisplayRange - (void)displayStateDidChange:(BOOL)inDisplayState
{ {
//subclass override //subclass override
} }
- (void)didExitDisplayRange - (void)loadStateDidChange:(BOOL)inLoadState
{
//subclass override
}
- (void)didEnterFetchDataRange
{
//subclass override
}
- (void)didExitFetchDataRange
{ {
//subclass override //subclass override
} }
@ -2242,12 +2232,12 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
if (nowFetchData != wasFetchData) { if (nowFetchData != wasFetchData) {
if (nowFetchData) { if (nowFetchData) {
[self fetchData]; [self fetchData];
[self didEnterFetchDataRange]; [self loadStateDidChange:YES];
} else { } else {
if ([self supportsRangeManagedInterfaceState]) { if ([self supportsRangeManagedInterfaceState]) {
[self clearFetchedData]; [self clearFetchedData];
} }
[self didExitFetchDataRange]; [self loadStateDidChange:NO];
} }
} }
@ -2293,9 +2283,9 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
} }
if (nowDisplay) { if (nowDisplay) {
[self didEnterDisplayRange]; [self displayStateDidChange:YES];
} else { } else {
[self didExitDisplayRange]; [self displayStateDidChange:NO];
} }
} }

View File

@ -87,11 +87,11 @@ for (ASDisplayNode *n in @[ nodes ]) {\
@property (atomic, copy) CGSize(^calculateSizeBlock)(ASTestDisplayNode *node, CGSize size); @property (atomic, copy) CGSize(^calculateSizeBlock)(ASTestDisplayNode *node, CGSize size);
@property (atomic) BOOL hasFetchedData; @property (atomic) BOOL hasFetchedData;
@property (atomic) BOOL didCallEnterDisplayRange; @property (atomic) BOOL displayRangeStateChangedToYES;
@property (atomic) BOOL didCallExitDisplayRange; @property (atomic) BOOL displayRangeStateChangedToNO;
@property (atomic) BOOL didCallEnterFetchDataRange; @property (atomic) BOOL loadStateChangedToYES;
@property (atomic) BOOL didCallExitFetchDataRange; @property (atomic) BOOL loadStateChangedToNO;
@end @end
@interface ASTestResponderNode : ASTestDisplayNode @interface ASTestResponderNode : ASTestDisplayNode
@ -116,28 +116,26 @@ for (ASDisplayNode *n in @[ nodes ]) {\
self.hasFetchedData = NO; self.hasFetchedData = NO;
} }
- (void)didEnterDisplayRange - (void)displayStateDidChange:(BOOL)inDisplayState
{ {
[super didEnterDisplayRange]; [super displayStateDidChange:inDisplayState];
self.didCallEnterDisplayRange = YES;
if (inDisplayState) {
self.displayRangeStateChangedToYES = YES;
} else {
self.displayRangeStateChangedToNO = YES;
}
} }
- (void)didExitDisplayRange - (void)loadStateDidChange:(BOOL)inLoadState
{ {
[super didExitDisplayRange]; [super loadStateDidChange:inLoadState];
self.didCallExitDisplayRange = YES;
} if (inLoadState) {
self.loadStateChangedToYES = YES;
- (void)didEnterFetchDataRange } else {
{ self.loadStateChangedToNO = YES;
[super didEnterFetchDataRange]; }
self.didCallEnterFetchDataRange = YES;
}
- (void)didExitFetchDataRange
{
[super didExitFetchDataRange];
self.didCallExitFetchDataRange = YES;
} }
- (void)dealloc - (void)dealloc
@ -1914,7 +1912,7 @@ static bool stringContainsPointer(NSString *description, const void *p) {
[node recursivelySetInterfaceState:ASInterfaceStateDisplay]; [node recursivelySetInterfaceState:ASInterfaceStateDisplay];
XCTAssert([node didCallEnterDisplayRange]); XCTAssert([node displayRangeStateChangedToYES]);
} }
- (void)testDidExitDisplayIsCalledWhenNodesExitDisplayRange - (void)testDidExitDisplayIsCalledWhenNodesExitDisplayRange
@ -1924,7 +1922,7 @@ static bool stringContainsPointer(NSString *description, const void *p) {
[node recursivelySetInterfaceState:ASInterfaceStateDisplay]; [node recursivelySetInterfaceState:ASInterfaceStateDisplay];
[node recursivelySetInterfaceState:ASInterfaceStateFetchData]; [node recursivelySetInterfaceState:ASInterfaceStateFetchData];
XCTAssert([node didCallExitDisplayRange]); XCTAssert([node displayRangeStateChangedToNO]);
} }
- (void)testDidEnterFetchDataIsCalledWhenNodesEnterFetchDataRange - (void)testDidEnterFetchDataIsCalledWhenNodesEnterFetchDataRange
@ -1933,7 +1931,7 @@ static bool stringContainsPointer(NSString *description, const void *p) {
[node recursivelySetInterfaceState:ASInterfaceStateFetchData]; [node recursivelySetInterfaceState:ASInterfaceStateFetchData];
XCTAssert([node didCallEnterFetchDataRange]); XCTAssert([node loadStateChangedToYES]);
} }
- (void)testDidExitFetchDataIsCalledWhenNodesExitFetchDataRange - (void)testDidExitFetchDataIsCalledWhenNodesExitFetchDataRange
@ -1943,7 +1941,7 @@ static bool stringContainsPointer(NSString *description, const void *p) {
[node recursivelySetInterfaceState:ASInterfaceStateFetchData]; [node recursivelySetInterfaceState:ASInterfaceStateFetchData];
[node recursivelySetInterfaceState:ASInterfaceStateDisplay]; [node recursivelySetInterfaceState:ASInterfaceStateDisplay];
XCTAssert([node didCallExitFetchDataRange]); XCTAssert([node loadStateChangedToNO]);
} }
@end @end