diff --git a/AsyncDisplayKit/ASDisplayNode.h b/AsyncDisplayKit/ASDisplayNode.h index 2681bf2682..a3972a9188 100644 --- a/AsyncDisplayKit/ASDisplayNode.h +++ b/AsyncDisplayKit/ASDisplayNode.h @@ -332,11 +332,11 @@ typedef CALayer *(^ASDisplayNodeLayerBlock)(); @property (nonatomic, assign) BOOL placeholderEnabled; /** - * @abstract Toggle to fade-out the placeholder when a node's contents are finished displaying. + * @abstract Set the time it takes to fade out the placeholder when a node's contents are finished displaying. * - * @discussion Defaults to NO. + * @discussion Defaults to 0 seconds. */ -@property (nonatomic, assign) BOOL placeholderFadesOut; +@property (nonatomic, assign) NSTimeInterval placeholderFadeDuration; /** @name Hit Testing */ @@ -535,4 +535,8 @@ typedef CALayer *(^ASDisplayNodeLayerBlock)(); * Convenience method, equivalent to [layer addSublayer:node.layer]. */ - (void)addSubnode:(ASDisplayNode *)node; -@end \ No newline at end of file +@end + +@interface ASDisplayNode (Deprecated) +@property (nonatomic, assign) BOOL placeholderFadesOut ASDISPLAYNODE_DEPRECATED; +@end diff --git a/AsyncDisplayKit/ASDisplayNode.mm b/AsyncDisplayKit/ASDisplayNode.mm index a5fdf683de..5404b4239d 100644 --- a/AsyncDisplayKit/ASDisplayNode.mm +++ b/AsyncDisplayKit/ASDisplayNode.mm @@ -124,8 +124,6 @@ void ASDisplayNodePerformBlockOnMainThread(void (^block)()) _flags.implementsImageDisplay = ([[self class] respondsToSelector:@selector(displayWithParameters:isCancelled:)] ? 1 : 0); _flags.implementsDrawParameters = ([self respondsToSelector:@selector(drawParametersForAsyncLayer:)] ? 1 : 0); - _fadeAnimationDuration = 0.1; - ASDisplayNodeMethodOverrides overrides = ASDisplayNodeMethodOverrideNone; if (ASDisplayNodeSubclassOverridesSelector([self class], @selector(touchesBegan:withEvent:))) { overrides |= ASDisplayNodeMethodOverrideTouchesBegan; @@ -1235,10 +1233,10 @@ static NSInteger incrementIfFound(NSInteger i) { [self _tearDownPlaceholderLayer]; }; - if (self.placeholderFadesOut) { + if (_placeholderFadeDuration > 0.0) { [CATransaction begin]; [CATransaction setCompletionBlock:cleanupBlock]; - [CATransaction setAnimationDuration:_fadeAnimationDuration]; + [CATransaction setAnimationDuration:_placeholderFadeDuration]; _placeholderLayer.opacity = 0.0; [CATransaction commit]; } else { @@ -1774,3 +1772,18 @@ static const char *ASDisplayNodeAssociatedNodeKey = "ASAssociatedNode"; } @end + + +@implementation ASDisplayNode (Deprecated) + +- (void)setPlaceholderFadesOut:(BOOL)placeholderFadesOut +{ + self.placeholderFadeDuration = placeholderFadesOut ? 0.1 : 0.0; +} + +- (BOOL)placeholderFadesOut +{ + return self.placeholderFadeDuration > 0.0; +} + +@end diff --git a/AsyncDisplayKit/Private/ASDisplayNodeInternal.h b/AsyncDisplayKit/Private/ASDisplayNodeInternal.h index 89f74f72ad..4988d60211 100644 --- a/AsyncDisplayKit/Private/ASDisplayNodeInternal.h +++ b/AsyncDisplayKit/Private/ASDisplayNodeInternal.h @@ -71,8 +71,6 @@ typedef NS_OPTIONS(NSUInteger, ASDisplayNodeMethodOverrides) { _ASPendingState *_pendingViewState; - NSTimeInterval _fadeAnimationDuration; - struct { // public properties unsigned synchronous:1; diff --git a/examples/Placeholders/Sample/SlowpokeImageNode.m b/examples/Placeholders/Sample/SlowpokeImageNode.m index 93ef9b5dcb..36fce4d726 100644 --- a/examples/Placeholders/Sample/SlowpokeImageNode.m +++ b/examples/Placeholders/Sample/SlowpokeImageNode.m @@ -28,7 +28,7 @@ static CGFloat const kASDKLogoAspectRatio = 2.79; { if (self = [super init]) { self.placeholderEnabled = YES; - self.placeholderFadesOut = YES; + self.placeholderFadeDuration = 0.1; } return self; }