1
UIPageViewController
클래스가 있는데 여기에서 모든 이미지 URL (nTempElements
)을 수집하고 이미지로드가 발생하는 ContentViewController
에 전달합니다. 사용자가 뒤로 또는 앞으로 스크롤 할 때 스크롤 된 페이지 이미지가로드 될 때까지 항상 첫 번째 viewcontroller 이미지를 자리 표시 자로 표시합니다.UIPageViewController 전환 도중 이미지로드 중
ContentViewController
에서 dispatch_async
을 제거하면이 문제는 더 이상 유효하지 않지만 이미지로드가 주 스레드에서 발생하므로이 문제는 터치 이벤트에 덜 반응합니다.
이 문제점에 대한 권장 사항이나 해결책은 무엇입니까?
PageContentViewController.m
- (PageContentViewController *)viewControllerAtIndex:(NSUInteger)index
{
if (([self.nTempElements count] == 0) || (index >= [self.nTempElements count])) {
return nil;
}
// Create a new view controller and pass suitable data.
PageContentViewController *pageContentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ContentViewController"];
pageContentViewController.imageURL = self.nTempElements[index];
return pageContentViewController;
}
ContentViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSURL *url = [NSURL URLWithString:self.imageURL];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage* image = [[UIImage alloc]initWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
[self.newsImageView setImage:image];
});
});
}
'pageContentViewController'를 초기화 한 후에 이미지로드 이후를 제외하고 어디에서나'setImage'를 호출하는 것을 볼 수 없습니다. 'pageContentViewController'는 어떻게 첫 번째 viewcontroller 이미지를 보여줄 수 있습니까? 다른 곳에서는'newsImageView'에 대한 이미지를 설정 했습니까? – trungduc
이미 다운로드 한 이미지를 캐시하지 않는 이유는 무엇입니까? AlamofireImage와 같은 타사 라이브러리를 찾아 보거나 SDWebImage가 여기에 도움을 줄 수 있습니다. –