2012-05-25 2 views
0

49 개의 이미지를 설정하는 IBAction이 있습니다. 이미지는 메서드의 끝에서만 설정되며 하나씩 설정되지는 않습니다. 왜 정확히 이것을 하는가? 방법의 끝에서 한 번에 모두가 아니라 하나씩 이미지를 설정하는 방법은 무엇입니까? 1.4 초간 멈추고 모든 이미지가 즉시 설정됩니다.UIImages가 메서드 반환시 그려집니다.

+0

아마도 49 개의 이미지를로드하는 것은 간단한 작업 (cpu wise)이 아니기 때문일 수 있습니다. 모든 변경 후에 디스플레이가 새로 고쳐지지 않습니다. 메소드를 호출하면 실제 데이터를 새로 고치기 전에 모든 데이터를로드합니다. 이 효과를 피하기 위해 다르게 할 수있는 몇 가지 방법 이상이있을 것입니다. 가장 먼저 떠오르는 것은 백그라운드에서 이미지를로드 한 다음 주 스레드에서 이미지를 설정 한 다음 백그라운드에서 다음 이미지를 계속로드하는 것입니다. 당신을 위해 최선의 해결책이 아닐 수도 있지만, 그것은 당신이하는 일에 달려 있습니다. – Matt

답변

0

예를 들어 배경 스레드에서 이미지를로드해야한다는 Matt의 제안에 동의합니다. 모든 UI 업데이트가 주요 큐에 일어날 필요로 생성 된있는 UIImageView의 추가

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 

dispatch_async(queue, ^{ 

    for (/* loop through my images */) 
    { 
     // do whatever you need to do to load image (e.g. create your UIImageView, myImageView) 

     // now submit it to the main queue to be displayed, in this case, adding it to the scrollview that I use to hold all of my image thumbnails 

     dispatch_async(dispatch_get_main_queue(), ^{ 
      [self.scrollView addSubview:myImageView]; 
     }); 
    } 

}); 

주 같은 무언가가, 메인 큐에 다시 제출됩니다.

관련 문제