AsyncDisplayKit

Image Modification Blocks

Many times, operations that would affect the appearance of an image you’re displaying are big sources of main thread work. Naturally, you want to move these to a background thread.

By assigning an imageModificationBlock to your imageNode, you can define a set of transformations that need to happen asynchronously to any image that gets set on the imageNode.

SwiftObjective-C
_backgroundImageNode.imageModificationBlock = ^(UIImage *image) {
	UIImage *newImage = [image applyBlurWithRadius:30 
										 tintColor:[UIColor colorWithWhite:0.5 alpha:0.3] 
							 saturationDeltaFactor:1.8 
							 			 maskImage:nil];
	return newImage ? newImage : image;
};

//some time later...

_backgroundImageNode.image = someImage;

The image named “someImage” will now be blurred asynchronously before being assigned to the imageNode to be displayed.

Edit on GitHub