2016-02-24 230 views
0

我試圖結合facebook的AsyncDisplayKit和DMLazyScrollView。AsyncDisplayKit圖像顯示閃爍

Display blinks

沒有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; 
} 

很高興知道是否有人已經解決了這個問題。

+0

順便說一句,我試圖發揮與它周圍,如消除_mediaNode.backgroundColor,或使用它而不異步調用,但仍閃爍 –

+0

嘗試設置_mediaNode.layerBacked =假。它幫助到我。 –

+0

不好意思抱歉。我AsyncDisplayKit的連接和這個自定義的uiview不適合在一起。它可能需要更多的調整才能一起工作。 –

回答

1

在這裏,我們走了,這裏的答案,爲什麼它閃爍:

當轉換一個應用程序使用AsyncDisplayKit,一個常見的錯誤是直接將節點添加到現有視圖層次。這樣做可以保證您的節點在渲染時會閃爍。

async display kit docs

+0

我在一個容器中使用我的,但是我的ASButtonNode的圖像仍然在滾動上閃爍。 – lwdthe1