Itai Spector
Itai Spector

Reputation: 652

AsyncDisplayKit Image Display Blinks

I'm trying to combine between facebook's AsyncDisplayKit and DMLazyScrollView. When moving to next/previous image, view blinks as seen here:

Display blinks

Without the AsyncDisplayKit, this problem doesn't occur.

Here's the part of the code that is in charge of getting the image:

- (UIViewController *) controllerAtIndex:(NSInteger) index {
    if (index > viewControllerArray.count || index < 0) return nil;
    id res = [viewControllerArray objectAtIndex:index];
    if (res == [NSNull null]) {
        UIViewController *contr = [[UIViewController alloc] init];

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
            ASNetworkImageNode *_mediaNode = [[ASNetworkImageNode alloc] init];
            _mediaNode.backgroundColor = ASDisplayNodeDefaultPlaceholderColor();
            _mediaNode.URL = [NSURL URLWithString:[imagesUrl objectAtIndex:index]];
            _mediaNode.frame = contr.view.bounds;

            dispatch_async(dispatch_get_main_queue(), ^{
                [contr.view addSubview:_mediaNode.view];
            });
        });
        [viewControllerArray replaceObjectAtIndex:index withObject:contr];
        return contr;
    }
    return res;
}

Glad to know if anyone has solved this problem.

Upvotes: 0

Views: 570

Answers (1)

Itai Spector
Itai Spector

Reputation: 652

Here we go, here's the answer why it flashes:

When converting an app to use AsyncDisplayKit, a common mistake is to add nodes directly to an existing view hierarchy. Doing this will virtually guarantee that your nodes will flash as they are rendered.

async display kit docs

Upvotes: 1

Related Questions