[ASDisplayNode] Fix flickering for nodes that support range managed interface state (#2710)

* Fix flickering for range managed nodes

* Go back to old behavior to check for range managed before calling didExitPreloadState in interface state change
This commit is contained in:
Michael Schneider
2016-12-05 10:34:03 -08:00
committed by Hannah Troisi
parent e361d00a73
commit a2e75152f8
2 changed files with 6 additions and 3 deletions

View File

@@ -2993,12 +2993,10 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
- (void)didExitPreloadState
{
if (_methodOverrides & ASDisplayNodeMethodOverrideClearFetchedData) {
if ([self supportsRangeManagedInterfaceState]) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
[self clearFetchedData];
#pragma clang diagnostic pop
}
}
}
@@ -3068,7 +3066,11 @@ void recursivelyTriggerDisplayForLayer(CALayer *layer, BOOL shouldBlock)
if (nowPreload) {
[self didEnterPreloadState];
} else {
[self didExitPreloadState];
// We don't want to call -didExitPreloadState on nodes that aren't being managed by a range controller.
// Otherwise we get flashing behavior from normal UIKit manipulations like navigation controller push / pop.
if ([self supportsRangeManagedInterfaceState]) {
[self didExitPreloadState];
}
}
}