【问题标题】:AsyncDisplayKit Image Display BlinksAsyncDisplayKit 图像显示闪烁
【发布时间】:2016-02-24 14:21:04
【问题描述】:

我正在尝试将 facebook 的 AsyncDisplayKit 和 DMLazyScrollView 结合起来。移动到下一张/上一张图片时,视图会闪烁,如下所示:

没有 AsyncDisplayKit,这个问题就不会发生。

这是负责获取图像的代码部分:

- (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;
}

很高兴知道是否有人解决了这个问题。

【问题讨论】:

  • 顺便说一下,我尝试过使用它,比如删除_mediaNode.backgroundColor,或者在没有异步调用的情况下使用它,但它仍然闪烁
  • 尝试设置_mediaNode.layerBacked = false。它对我有帮助。
  • 不,抱歉,仍然没有。我 AsyncDisplayKit 的连接和这个自定义的 uiview 不能很好地结合在一起。它可能需要更多调整才能协同工作。

标签: ios asyncdisplaykit


【解决方案1】:

我们开始吧,这就是为什么它闪烁的答案:

将应用程序转换为使用 AsyncDisplayKit 时,一个常见的错误是将节点直接添加到现有视图层次结构中。这样做几乎可以保证您的节点在渲染时会闪烁。

async display kit docs

【讨论】:

  • 我在容器中使用我的,但我的 ASButtonNode 的图像仍在滚动时闪烁。
猜你喜欢
  • 1970-01-01
  • 2012-08-22
  • 2015-04-25
  • 2012-05-13
  • 2010-10-29
  • 1970-01-01
  • 1970-01-01
  • 2020-08-30
  • 2012-05-30
相关资源
最近更新 更多