diff --git a/AsyncDisplayKit/ASImageNode.mm b/AsyncDisplayKit/ASImageNode.mm index 38f096ce87..ec4141a583 100644 --- a/AsyncDisplayKit/ASImageNode.mm +++ b/AsyncDisplayKit/ASImageNode.mm @@ -57,10 +57,6 @@ @end -@interface ASImageNode () -@property (nonatomic, strong) ASTextNode *debugLabelNode; -@end - @implementation ASImageNode { @private @@ -74,6 +70,8 @@ BOOL _forceUpscaling; //Defaults to NO. CGRect _cropRect; // Defaults to CGRectMake(0.5, 0.5, 0, 0) CGRect _cropDisplayBounds; + + ASTextNode *_debugLabelNode; } @synthesize image = _image; @@ -95,7 +93,7 @@ _cropDisplayBounds = CGRectNull; _placeholderColor = ASDisplayNodeDefaultPlaceholderColor(); - if ([ASImageNode shouldShowImageDebugOverlay]) { + if ([ASImageNode shouldShowImageScalingOverlay]) { _debugLabelNode = [[ASTextNode alloc] init]; _debugLabelNode.layerBacked = YES; [self addSubnode:_debugLabelNode]; @@ -120,7 +118,6 @@ { ASDN::MutexLocker l(_imageLock); // if a preferredFrameSize is set, call the superclass to return that instead of using the image size. - [_debugLabelNode measure:constrainedSize]; if (CGSizeEqualToSize(self.preferredFrameSize, CGSizeZero) == NO) return [super calculateSizeThatFits:constrainedSize]; else if (_image) @@ -221,7 +218,6 @@ CGSize boundsSizeInPixels = CGSizeMake(floorf(bounds.size.width * contentsScale), floorf(bounds.size.height * contentsScale)); if (_debugLabelNode) { - // NSLog(@"widthScale = %f, heightScale = %f", imageSizeInPixels.width / boundsSizeInPixels.width, imageSizeInPixels.height / boundsSizeInPixels.height); CGFloat pixelCountRatio = (imageSizeInPixels.width * imageSizeInPixels.height) / (boundsSizeInPixels.width * boundsSizeInPixels.height); if (pixelCountRatio != 1.0) { NSString *scaleString = [NSString stringWithFormat:@"%.2fx", pixelCountRatio]; diff --git a/AsyncDisplayKit/AsyncDisplayKit+Debug.h b/AsyncDisplayKit/AsyncDisplayKit+Debug.h index 5eb1eaa9a1..c9be26f11a 100644 --- a/AsyncDisplayKit/AsyncDisplayKit+Debug.h +++ b/AsyncDisplayKit/AsyncDisplayKit+Debug.h @@ -9,13 +9,15 @@ #import #import "ASImageNode.h" -@interface ASImageNode (Debug) +@interface ASImageNode (Debugging) /** -* Class method to enable visualization of an ASImageNode's image size. For app debugging purposes only. -* @param enabled Specify YES to turn on this debug feature when messaging the ASImageNode class. +* Enables an ASImageNode debug label that shows the ratio of pixels in the source image to those in +* the displayed bounds (including cropRect). This helps detect excessive image fetching / downscaling, +* as well as upscaling (such as providing a URL not suitable for a Retina device). For dev purposes only. +* @param enabled Specify YES to show the label on all ASImageNodes with non-1.0x source-to-bounds pixel ratio. */ -+ (void)setImageDebugEnabled:(BOOL)enable; -+ (BOOL)shouldShowImageDebugOverlay; ++ (void)setShouldShowImageScalingOverlay:(BOOL)show; ++ (BOOL)shouldShowImageScalingOverlay; @end \ No newline at end of file diff --git a/AsyncDisplayKit/AsyncDisplayKit+Debug.m b/AsyncDisplayKit/AsyncDisplayKit+Debug.m index b8a0840d3b..c0cd93a6ce 100644 --- a/AsyncDisplayKit/AsyncDisplayKit+Debug.m +++ b/AsyncDisplayKit/AsyncDisplayKit+Debug.m @@ -8,20 +8,19 @@ #import "AsyncDisplayKit+Debug.h" #import "ASDisplayNode+Subclasses.h" -#import "ASTextNode.h" -static BOOL __enableImageSizeOverlay = NO; +static BOOL __shouldShowImageScalingOverlay = NO; -@implementation ASImageNode (Debug) +@implementation ASImageNode (Debugging) -+ (void)setImageDebugEnabled:(BOOL)enable; ++ (void)setShouldShowImageScalingOverlay:(BOOL)show; { - __enableImageSizeOverlay = enable; + __shouldShowImageScalingOverlay = show; } -+ (BOOL)shouldShowImageDebugOverlay ++ (BOOL)shouldShowImageScalingOverlay { - return __enableImageSizeOverlay; + return __shouldShowImageScalingOverlay; } @end