0
49 개의 이미지를 설정하는 IBAction이 있습니다. 이미지는 메서드의 끝에서만 설정되며 하나씩 설정되지는 않습니다. 왜 정확히 이것을 하는가? 방법의 끝에서 한 번에 모두가 아니라 하나씩 이미지를 설정하는 방법은 무엇입니까? 1.4 초간 멈추고 모든 이미지가 즉시 설정됩니다.UIImages가 메서드 반환시 그려집니다.
49 개의 이미지를 설정하는 IBAction이 있습니다. 이미지는 메서드의 끝에서만 설정되며 하나씩 설정되지는 않습니다. 왜 정확히 이것을 하는가? 방법의 끝에서 한 번에 모두가 아니라 하나씩 이미지를 설정하는 방법은 무엇입니까? 1.4 초간 멈추고 모든 이미지가 즉시 설정됩니다.UIImages가 메서드 반환시 그려집니다.
예를 들어 배경 스레드에서 이미지를로드해야한다는 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];
});
}
});
주 같은 무언가가, 메인 큐에 다시 제출됩니다.
아마도 49 개의 이미지를로드하는 것은 간단한 작업 (cpu wise)이 아니기 때문일 수 있습니다. 모든 변경 후에 디스플레이가 새로 고쳐지지 않습니다. 메소드를 호출하면 실제 데이터를 새로 고치기 전에 모든 데이터를로드합니다. 이 효과를 피하기 위해 다르게 할 수있는 몇 가지 방법 이상이있을 것입니다. 가장 먼저 떠오르는 것은 백그라운드에서 이미지를로드 한 다음 주 스레드에서 이미지를 설정 한 다음 백그라운드에서 다음 이미지를 계속로드하는 것입니다. 당신을 위해 최선의 해결책이 아닐 수도 있지만, 그것은 당신이하는 일에 달려 있습니다. – Matt