있는 UIImageView는 전혀로드를 수행하지 않습니다 : 나 이미지를로드 할 경우 그런데
, 여기에 코드 조각입니다. 모든 로딩은 [[UIImage alloc] initWithContentsOfFile:filePath]
에 의해 수행되고 파일이로드되는 동안 스레드가 차단됩니다 (따라서 호출이 마침내 반환 될 때까지로드가 이미 완료됩니다).
- (void)loadImage:(NSString *)filePath {
[self performSelectorInBackground:@selector(loadImageInBackground:) withObject:filePath];
}
- (void)loadImageInBackground:(NSString *)filePath {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:filePath];
[self performSelectorOnMainThread:@selector(didLoadImageInBackground:) withObject:image waitUntilDone:YES];
[image release];
[pool release];
}
- (void)didLoadImageInBackground:(UIImage *)image {
self.imageView.image = image;
}
당신은 고해상도 버전을로드 loadImage:
를 호출 한 후 저해상도 이미지를 표시 self.imageView
을 설정 한 것입니다 : 당신이 원하는 무엇
이 같은 것입니다.
이전 호출에서 didLoadImageInBackground:
이 호출되기 전에이 호출을 반복적으로 호출하면 장치의 메모리가 부족해질 수 있습니다. 또는 첫 번째 호출에서 가져온 이미지가 didLoadImageInBackground:
이 두 번째 이미지에 대해 호출되기 전에 두 번째 호출에서 가져온 이미지보다로드하는 데 오래 걸릴 수도 있습니다. 이러한 문제를 해결하는 것은 독자 (또는 다른 질문)에게 연습 과제로 남겨 둡니다.
이미지로드 방법을 소스 코드로 알려주십시오. – Tim
감사합니다 @Tim - 여기에 그 소스 코드 중 일부가 있습니다. – m0rtimer
'큰 jpeg'의 크기는 얼마입니까? 왜냐하면 당신이 심각하게 큰 소리로 말하고 있다면 어떤 종류의 기와를 사용하는 것이 훨씬 낫습니다. UIImageViews와 큰 이미지와 관련된 성능에 큰 영향이 있습니다. – lxt